@visactor/vrender-components 0.18.11-alpha.6 → 0.18.11-alpha.7

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 (283) hide show
  1. package/cjs/axis/base.js +9 -21
  2. package/cjs/axis/base.js.map +1 -1
  3. package/cjs/axis/circle.js +1 -1
  4. package/cjs/axis/circle.js.map +1 -1
  5. package/cjs/axis/grid/base.js +5 -1
  6. package/cjs/axis/grid/base.js.map +1 -1
  7. package/cjs/axis/index.d.ts +0 -1
  8. package/cjs/axis/index.js +1 -1
  9. package/cjs/axis/index.js.map +1 -1
  10. package/cjs/axis/line.js +5 -5
  11. package/cjs/axis/line.js.map +1 -1
  12. package/cjs/axis/mixin/circle.js +4 -2
  13. package/cjs/axis/mixin/circle.js.map +1 -1
  14. package/cjs/axis/overlap/auto-limit.js +13 -8
  15. package/cjs/axis/overlap/auto-limit.js.map +1 -1
  16. package/cjs/axis/util.d.ts +2 -5
  17. package/cjs/axis/util.js +5 -18
  18. package/cjs/axis/util.js.map +1 -1
  19. package/cjs/brush/brush.js +9 -11
  20. package/cjs/brush/brush.js.map +1 -1
  21. package/cjs/brush/type.js +1 -2
  22. package/cjs/checkbox/checkbox.d.ts +1 -1
  23. package/cjs/checkbox/checkbox.js +10 -9
  24. package/cjs/checkbox/checkbox.js.map +1 -1
  25. package/cjs/crosshair/polygon.js +2 -1
  26. package/cjs/index.d.ts +1 -1
  27. package/cjs/index.js +1 -1
  28. package/cjs/index.js.map +1 -1
  29. package/cjs/indicator/indicator.js +3 -3
  30. package/cjs/indicator/indicator.js.map +1 -1
  31. package/cjs/indicator/type.js +1 -1
  32. package/cjs/label/arc.d.ts +2 -2
  33. package/cjs/label/base.d.ts +2 -2
  34. package/cjs/label/base.js +1 -3
  35. package/cjs/label/base.js.map +1 -1
  36. package/cjs/label/index.js +1 -2
  37. package/cjs/label/type.js +2 -1
  38. package/cjs/label/util.js +2 -2
  39. package/cjs/legend/color/color.js +5 -7
  40. package/cjs/legend/color/color.js.map +1 -1
  41. package/cjs/legend/discrete/discrete.js +2 -4
  42. package/cjs/legend/discrete/discrete.js.map +1 -1
  43. package/cjs/legend/size/size.js +4 -6
  44. package/cjs/legend/size/size.js.map +1 -1
  45. package/cjs/marker/animate/animate.d.ts +13 -0
  46. package/cjs/marker/animate/animate.js +92 -0
  47. package/cjs/marker/animate/animate.js.map +1 -0
  48. package/cjs/marker/animate/call-in.d.ts +4 -0
  49. package/cjs/marker/animate/call-in.js +27 -0
  50. package/cjs/marker/animate/call-in.js.map +1 -0
  51. package/cjs/marker/animate/clip-in.d.ts +4 -0
  52. package/cjs/marker/animate/clip-in.js +23 -0
  53. package/cjs/marker/animate/clip-in.js.map +1 -0
  54. package/cjs/marker/animate/common.d.ts +9 -0
  55. package/cjs/marker/animate/common.js +48 -0
  56. package/cjs/marker/animate/common.js.map +1 -0
  57. package/cjs/marker/animate/fade-in.d.ts +7 -0
  58. package/cjs/marker/animate/fade-in.js +30 -0
  59. package/cjs/marker/animate/fade-in.js.map +1 -0
  60. package/cjs/marker/animate/fade-out.d.ts +7 -0
  61. package/cjs/marker/animate/fade-out.js +30 -0
  62. package/cjs/marker/animate/fade-out.js.map +1 -0
  63. package/cjs/marker/animate/index.js +3 -0
  64. package/cjs/marker/animate/index.js.map +1 -0
  65. package/cjs/marker/arc-area.d.ts +55 -0
  66. package/cjs/marker/arc-area.js +131 -0
  67. package/cjs/marker/arc-area.js.map +1 -0
  68. package/cjs/marker/arc-line.d.ts +25 -0
  69. package/cjs/marker/arc-line.js +106 -0
  70. package/cjs/marker/arc-line.js.map +1 -0
  71. package/cjs/marker/area.d.ts +14 -4
  72. package/cjs/marker/area.js +34 -21
  73. package/cjs/marker/area.js.map +1 -1
  74. package/cjs/marker/base.d.ts +21 -3
  75. package/cjs/marker/base.js +40 -5
  76. package/cjs/marker/base.js.map +1 -1
  77. package/cjs/marker/common-line.d.ts +22 -0
  78. package/cjs/marker/common-line.js +56 -0
  79. package/cjs/marker/common-line.js.map +1 -0
  80. package/cjs/marker/config.d.ts +79 -6
  81. package/cjs/marker/config.js +77 -37
  82. package/cjs/marker/config.js.map +1 -1
  83. package/cjs/marker/index.d.ts +2 -0
  84. package/cjs/marker/index.js +2 -1
  85. package/cjs/marker/index.js.map +1 -1
  86. package/cjs/marker/line.d.ts +24 -12
  87. package/cjs/marker/line.js +111 -45
  88. package/cjs/marker/line.js.map +1 -1
  89. package/cjs/marker/point.d.ts +8 -3
  90. package/cjs/marker/point.js +33 -9
  91. package/cjs/marker/point.js.map +1 -1
  92. package/cjs/marker/register.d.ts +2 -0
  93. package/cjs/marker/register.js +11 -2
  94. package/cjs/marker/register.js.map +1 -1
  95. package/cjs/marker/type.d.ts +102 -12
  96. package/cjs/marker/type.js +8 -2
  97. package/cjs/marker/type.js.map +1 -1
  98. package/cjs/pager/pager.js +2 -2
  99. package/cjs/pager/pager.js.map +1 -1
  100. package/cjs/player/base-player.d.ts +0 -2
  101. package/cjs/player/base-player.js +6 -11
  102. package/cjs/player/base-player.js.map +1 -1
  103. package/cjs/player/continuous-player.d.ts +1 -1
  104. package/cjs/player/continuous-player.js +4 -6
  105. package/cjs/player/continuous-player.js.map +1 -1
  106. package/cjs/player/controller/controller.js +4 -4
  107. package/cjs/player/controller/controller.js.map +1 -1
  108. package/cjs/player/discrete-player.d.ts +1 -1
  109. package/cjs/player/discrete-player.js +4 -6
  110. package/cjs/player/discrete-player.js.map +1 -1
  111. package/cjs/segment/arc-segment.d.ts +13 -0
  112. package/cjs/segment/arc-segment.js +51 -0
  113. package/cjs/segment/arc-segment.js.map +1 -0
  114. package/cjs/segment/index.d.ts +1 -0
  115. package/cjs/segment/index.js +2 -1
  116. package/cjs/segment/index.js.map +1 -1
  117. package/cjs/segment/register.d.ts +2 -1
  118. package/cjs/segment/register.js +8 -3
  119. package/cjs/segment/register.js.map +1 -1
  120. package/cjs/segment/segment.d.ts +9 -7
  121. package/cjs/segment/segment.js +12 -8
  122. package/cjs/segment/segment.js.map +1 -1
  123. package/cjs/segment/type.d.ts +24 -4
  124. package/cjs/segment/type.js.map +1 -1
  125. package/cjs/slider/slider.d.ts +0 -2
  126. package/cjs/slider/slider.js +38 -53
  127. package/cjs/slider/slider.js.map +1 -1
  128. package/cjs/slider/type.d.ts +0 -1
  129. package/cjs/slider/type.js.map +1 -1
  130. package/cjs/tag/tag.d.ts +5 -0
  131. package/cjs/tag/tag.js +14 -5
  132. package/cjs/tag/tag.js.map +1 -1
  133. package/cjs/util/interaction.d.ts +4 -0
  134. package/cjs/util/interaction.js +37 -0
  135. package/cjs/util/interaction.js.map +1 -0
  136. package/cjs/util/text.d.ts +1 -1
  137. package/cjs/util/text.js +7 -6
  138. package/cjs/util/text.js.map +1 -1
  139. package/es/axis/base.js +13 -23
  140. package/es/axis/base.js.map +1 -1
  141. package/es/axis/circle.js +2 -2
  142. package/es/axis/circle.js.map +1 -1
  143. package/es/axis/grid/base.js +6 -2
  144. package/es/axis/grid/base.js.map +1 -1
  145. package/es/axis/index.d.ts +0 -1
  146. package/es/axis/index.js +0 -2
  147. package/es/axis/index.js.map +1 -1
  148. package/es/axis/line.js +5 -5
  149. package/es/axis/line.js.map +1 -1
  150. package/es/axis/mixin/circle.js +3 -2
  151. package/es/axis/mixin/circle.js.map +1 -1
  152. package/es/axis/overlap/auto-limit.js +13 -9
  153. package/es/axis/overlap/auto-limit.js.map +1 -1
  154. package/es/axis/util.d.ts +2 -5
  155. package/es/axis/util.js +1 -15
  156. package/es/axis/util.js.map +1 -1
  157. package/es/brush/brush.js +9 -11
  158. package/es/brush/brush.js.map +1 -1
  159. package/es/brush/type.js +1 -2
  160. package/es/checkbox/checkbox.d.ts +1 -1
  161. package/es/checkbox/checkbox.js +10 -9
  162. package/es/checkbox/checkbox.js.map +1 -1
  163. package/es/crosshair/polygon.js +2 -1
  164. package/es/index.d.ts +1 -1
  165. package/es/index.js +1 -1
  166. package/es/index.js.map +1 -1
  167. package/es/indicator/indicator.js +3 -3
  168. package/es/indicator/indicator.js.map +1 -1
  169. package/es/indicator/type.js +1 -1
  170. package/es/label/arc.d.ts +2 -2
  171. package/es/label/base.d.ts +2 -2
  172. package/es/label/base.js +1 -3
  173. package/es/label/base.js.map +1 -1
  174. package/es/label/index.js +1 -2
  175. package/es/label/type.js +2 -1
  176. package/es/label/util.js +1 -1
  177. package/es/legend/color/color.js +5 -7
  178. package/es/legend/color/color.js.map +1 -1
  179. package/es/legend/discrete/discrete.js +2 -4
  180. package/es/legend/discrete/discrete.js.map +1 -1
  181. package/es/legend/size/size.js +4 -6
  182. package/es/legend/size/size.js.map +1 -1
  183. package/es/marker/animate/animate.d.ts +13 -0
  184. package/es/marker/animate/animate.js +92 -0
  185. package/es/marker/animate/animate.js.map +1 -0
  186. package/es/marker/animate/call-in.d.ts +4 -0
  187. package/es/marker/animate/call-in.js +17 -0
  188. package/es/marker/animate/call-in.js.map +1 -0
  189. package/es/marker/animate/clip-in.d.ts +4 -0
  190. package/es/marker/animate/clip-in.js +15 -0
  191. package/es/marker/animate/clip-in.js.map +1 -0
  192. package/es/marker/animate/common.d.ts +9 -0
  193. package/es/marker/animate/common.js +39 -0
  194. package/es/marker/animate/common.js.map +1 -0
  195. package/es/marker/animate/fade-in.d.ts +7 -0
  196. package/es/marker/animate/fade-in.js +20 -0
  197. package/es/marker/animate/fade-in.js.map +1 -0
  198. package/es/marker/animate/fade-out.d.ts +7 -0
  199. package/es/marker/animate/fade-out.js +20 -0
  200. package/es/marker/animate/fade-out.js.map +1 -0
  201. package/es/marker/animate/index.js +3 -0
  202. package/es/marker/animate/index.js.map +1 -0
  203. package/es/marker/arc-area.d.ts +55 -0
  204. package/es/marker/arc-area.js +143 -0
  205. package/es/marker/arc-area.js.map +1 -0
  206. package/es/marker/arc-line.d.ts +25 -0
  207. package/es/marker/arc-line.js +114 -0
  208. package/es/marker/arc-line.js.map +1 -0
  209. package/es/marker/area.d.ts +14 -4
  210. package/es/marker/area.js +36 -19
  211. package/es/marker/area.js.map +1 -1
  212. package/es/marker/base.d.ts +21 -3
  213. package/es/marker/base.js +43 -4
  214. package/es/marker/base.js.map +1 -1
  215. package/es/marker/common-line.d.ts +22 -0
  216. package/es/marker/common-line.js +58 -0
  217. package/es/marker/common-line.js.map +1 -0
  218. package/es/marker/config.d.ts +79 -6
  219. package/es/marker/config.js +79 -37
  220. package/es/marker/config.js.map +1 -1
  221. package/es/marker/index.d.ts +2 -0
  222. package/es/marker/index.js +4 -0
  223. package/es/marker/index.js.map +1 -1
  224. package/es/marker/line.d.ts +24 -12
  225. package/es/marker/line.js +116 -48
  226. package/es/marker/line.js.map +1 -1
  227. package/es/marker/point.d.ts +8 -3
  228. package/es/marker/point.js +34 -6
  229. package/es/marker/point.js.map +1 -1
  230. package/es/marker/register.d.ts +2 -0
  231. package/es/marker/register.js +10 -2
  232. package/es/marker/register.js.map +1 -1
  233. package/es/marker/type.d.ts +102 -12
  234. package/es/marker/type.js +9 -0
  235. package/es/marker/type.js.map +1 -1
  236. package/es/pager/pager.js +2 -2
  237. package/es/pager/pager.js.map +1 -1
  238. package/es/player/base-player.d.ts +0 -2
  239. package/es/player/base-player.js +6 -11
  240. package/es/player/base-player.js.map +1 -1
  241. package/es/player/continuous-player.d.ts +1 -1
  242. package/es/player/continuous-player.js +4 -6
  243. package/es/player/continuous-player.js.map +1 -1
  244. package/es/player/controller/controller.js +5 -5
  245. package/es/player/controller/controller.js.map +1 -1
  246. package/es/player/discrete-player.d.ts +1 -1
  247. package/es/player/discrete-player.js +4 -6
  248. package/es/player/discrete-player.js.map +1 -1
  249. package/es/segment/arc-segment.d.ts +13 -0
  250. package/es/segment/arc-segment.js +49 -0
  251. package/es/segment/arc-segment.js.map +1 -0
  252. package/es/segment/index.d.ts +1 -0
  253. package/es/segment/index.js +2 -0
  254. package/es/segment/index.js.map +1 -1
  255. package/es/segment/register.d.ts +2 -1
  256. package/es/segment/register.js +6 -2
  257. package/es/segment/register.js.map +1 -1
  258. package/es/segment/segment.d.ts +9 -7
  259. package/es/segment/segment.js +11 -8
  260. package/es/segment/segment.js.map +1 -1
  261. package/es/segment/type.d.ts +24 -4
  262. package/es/segment/type.js.map +1 -1
  263. package/es/slider/slider.d.ts +0 -2
  264. package/es/slider/slider.js +36 -50
  265. package/es/slider/slider.js.map +1 -1
  266. package/es/slider/type.d.ts +0 -1
  267. package/es/slider/type.js.map +1 -1
  268. package/es/tag/tag.d.ts +5 -0
  269. package/es/tag/tag.js +14 -5
  270. package/es/tag/tag.js.map +1 -1
  271. package/es/util/interaction.d.ts +4 -0
  272. package/es/util/interaction.js +30 -0
  273. package/es/util/interaction.js.map +1 -0
  274. package/es/util/text.d.ts +1 -1
  275. package/es/util/text.js +7 -6
  276. package/es/util/text.js.map +1 -1
  277. package/package.json +3 -3
  278. package/cjs/marker/util.js +0 -3
  279. package/cjs/marker/util.js.map +0 -1
  280. package/es/marker/util.js +0 -3
  281. package/es/marker/util.js.map +0 -1
  282. /package/cjs/marker/{util.d.ts → animate/index.d.ts} +0 -0
  283. /package/es/marker/{util.d.ts → animate/index.d.ts} +0 -0
@@ -9,8 +9,8 @@ const vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"),
9
9
  class BasePlayer extends base_1.AbstractComponent {
10
10
  constructor(attributes, options) {
11
11
  super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, BasePlayer.defaultAttributes, attributes)),
12
- this._data = [], this._dataIndex = 0, this._layoutInfo = {}, this._updateSliderAttrs = () => {
13
- var _a, _b;
12
+ this._data = [], this._layoutInfo = {}, this._updateSliderAttrs = () => {
13
+ var _a, _b, _c;
14
14
  let handlerSize;
15
15
  (0, vutils_1.isValidNumber)(this._handlerStyle.size) ? handlerSize = this._handlerStyle.size : this._handlerStyle.size && this._handlerStyle.size.length && (handlerSize = (0,
16
16
  vutils_1.max)(this._handlerStyle.size[0], this._handlerStyle.size[1]));
@@ -18,7 +18,7 @@ class BasePlayer extends base_1.AbstractComponent {
18
18
  visible: this._sliderVisible,
19
19
  min: this._minIndex,
20
20
  max: this._maxIndex,
21
- value: this._dataIndex,
21
+ value: null !== (_a = this.attribute.dataIndex) && void 0 !== _a ? _a : 0,
22
22
  railWidth: this._railStyle.width,
23
23
  railHeight: this._railStyle.height,
24
24
  railStyle: this._railStyle,
@@ -41,11 +41,11 @@ class BasePlayer extends base_1.AbstractComponent {
41
41
  disableTriggerEvent: this.attribute.disableTriggerEvent
42
42
  };
43
43
  if ((0, utils_1.isHorizontal)(this._orient)) {
44
- const railWidth = Math.max(0, this._layoutInfo.slider.size), railHeight = null !== (_a = this._railStyle.height) && void 0 !== _a ? _a : constant_1.RailDefaultSize[1];
44
+ const railWidth = Math.max(0, this._layoutInfo.slider.size), railHeight = null !== (_b = this._railStyle.height) && void 0 !== _b ? _b : constant_1.RailDefaultSize[1];
45
45
  attrs.layout = "horizontal", attrs.railHeight = railHeight, attrs.railWidth = railWidth,
46
46
  attrs.x = this._layoutInfo.slider.x, attrs.y = this._layoutInfo.slider.y;
47
47
  } else {
48
- const railHeight = Math.max(0, this._layoutInfo.slider.size), railWidth = null !== (_b = this._railStyle.width) && void 0 !== _b ? _b : constant_1.RailDefaultSize[1];
48
+ const railHeight = Math.max(0, this._layoutInfo.slider.size), railWidth = null !== (_c = this._railStyle.width) && void 0 !== _c ? _c : constant_1.RailDefaultSize[1];
49
49
  attrs.layout = "vertical", attrs.railWidth = railWidth, attrs.railHeight = railHeight,
50
50
  attrs.x = this._layoutInfo.slider.x, attrs.y = this._layoutInfo.slider.y;
51
51
  }
@@ -105,8 +105,7 @@ class BasePlayer extends base_1.AbstractComponent {
105
105
  }, this._initController = () => {
106
106
  const attrs = this._updateControllerAttrs();
107
107
  this._controller = new controller_1.Controller(attrs), this._controllerVisible && this.add(this._controller);
108
- }, this._initAttributes(), this._initDataIndex(), this._initLayoutInfo(), this._initController(),
109
- this._initSlider();
108
+ }, this._initAttributes(), this._initLayoutInfo(), this._initController(), this._initSlider();
110
109
  }
111
110
  _initAttributes() {
112
111
  this._size = this.attribute.size, this._orient = this.attribute.orient, this._data = this.attribute.data,
@@ -118,10 +117,6 @@ class BasePlayer extends base_1.AbstractComponent {
118
117
  this._pause = Object.assign({}, controller.pause), this._forward = Object.assign({}, controller.forward),
119
118
  this._backward = Object.assign({}, controller.backward);
120
119
  }
121
- _initDataIndex() {
122
- var _a;
123
- this._dataIndex = null !== (_a = this.attribute.dataIndex) && void 0 !== _a ? _a : 0;
124
- }
125
120
  _initLayoutInfo() {
126
121
  var _a, _b, _c;
127
122
  const controllers = [ this._start, this._backward, this._forward ].sort(((a, b) => a.order - b.order)), startControllers = controllers.filter((d => "end" !== d.position)), endControllers = controllers.filter((d => "end" === d.position)), railSectionLength = null !== (_a = (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/player/base-player.ts"],"names":[],"mappings":"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","file":"base-player.js","sourcesContent":["import type { INode } from '@visactor/vrender-core';\nimport { isNumber, isValidNumber, max, merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { ComponentOptions, OrientType } from '../interface';\nimport type { SliderAttributes } from '../slider';\nimport { Slider } from '../slider';\nimport type { ControllerAttributes } from './controller';\nimport { Controller } from './controller';\nimport type {\n Datum,\n PlayerEventEnum,\n PlayerAttributes,\n RailStyleType,\n ControllerType,\n TrackStyleType,\n HandlerStyleType\n} from './type';\nimport { RailDefaultSize, defaultControllerAttributes } from './constant';\nimport { isHorizontal } from './utils';\n\n/**\n * 基本播放器组件\n * 提供最基本的布局能力,\n */\nexport class BasePlayer<T> extends AbstractComponent<Required<PlayerAttributes>> {\n static defaultAttributes = {\n visible: true,\n data: [] as Datum[],\n interval: 1000,\n orient: 'bottom',\n align: 'center',\n size: {\n height: 20,\n width: 300\n },\n slider: {\n visible: true,\n space: 10,\n dx: 0,\n dy: 0,\n railStyle: {\n cornerRadius: 5\n },\n trackStyle: {},\n handlerStyle: {}\n },\n controller: {\n visible: true,\n start: { ...defaultControllerAttributes, key: 'start', position: 'start', space: 0 },\n pause: { ...defaultControllerAttributes, key: 'pause', position: 'start' },\n forward: { ...defaultControllerAttributes, key: 'forward', position: 'end' },\n backward: { ...defaultControllerAttributes, key: 'backward', position: 'start' }\n }\n };\n\n // 组件属性\n protected _slider: Slider;\n protected _controller: Controller;\n\n // 数据属性\n protected _data = [] as Datum[];\n protected _minIndex: number;\n protected _maxIndex: number;\n\n // 滑轨属性\n private _sliderVisible: boolean;\n private _railStyle: RailStyleType;\n private _trackStyle: TrackStyleType;\n private _handlerStyle: HandlerStyleType;\n\n // 控件属性\n private _controllerVisible: boolean;\n private _start: ControllerType;\n private _pause: ControllerType;\n private _forward: ControllerType;\n private _backward: ControllerType;\n\n // 布局属性\n private _size: { width: number; height: number };\n private _orient: OrientType;\n\n // dataIndex, 代表slider的value\n protected _dataIndex: number = 0;\n\n private _layoutInfo: {\n // 滚动条位置\n slider?: { x: number; y: number; size: number };\n\n // 控件位置\n start?: { x: number; y: number; size: number };\n pause?: { x: number; y: number; size: number };\n backward?: { x: number; y: number; size: number };\n forward?: { x: number; y: number; size: number };\n } = {};\n\n constructor(attributes: T, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, BasePlayer.defaultAttributes, attributes));\n // 先初始化属性, 再初始化Slider、Controller, 最后初始化事件.\n this._initAttributes();\n this._initDataIndex();\n this._initLayoutInfo();\n this._initController();\n this._initSlider();\n }\n\n /**\n * 初始化属性\n */\n _initAttributes() {\n // 基本布局属性\n this._size = this.attribute.size;\n this._orient = this.attribute.orient;\n\n // Slider范围, 起点一定要从0开始\n this._data = this.attribute.data;\n this._minIndex = 0;\n this._maxIndex = this._data.length - 1;\n\n const { slider = {}, controller = {} as PlayerAttributes['controller'] } = this.attribute;\n // 轨道样式\n this._sliderVisible = slider.visible;\n this._railStyle = { ...slider.railStyle };\n this._trackStyle = { ...slider.trackStyle };\n this._handlerStyle = { ...slider.handlerStyle };\n\n // 控制器样式\n this._controllerVisible = controller.visible;\n this._start = { ...controller.start };\n this._pause = { ...controller.pause };\n this._forward = { ...controller.forward };\n this._backward = { ...controller.backward };\n }\n\n /**\n * 初始化dataIndex\n */\n _initDataIndex() {\n this._dataIndex = this.attribute.dataIndex ?? 0;\n }\n\n private _initLayoutInfo() {\n // 控制器\n const controllers = [this._start, this._backward, this._forward].sort((a, b) => a.order - b.order);\n // 在开始位置的控制器\n const startControllers = controllers.filter(d => d.position !== 'end');\n // 在结束位置的控制器\n const endControllers = controllers.filter(d => d.position === 'end');\n // 滑轨横切面长度\n const railSectionLength =\n (isHorizontal(this._orient) ? this._railStyle.height : this._railStyle.width) ?? RailDefaultSize[1];\n\n // 1. 计算所有组件自身占据的宽度 or 高度\n const controllerPx = controllers.reduce((len, controller) => {\n const size = controller.style.size;\n const maxSize = isNumber(size) ? size : max(size[0], size[1]);\n return len + controller.space + maxSize;\n }, 0);\n\n // 2. 计算slider的总占据像素\n const sliderPx = this._sliderVisible\n ? (isHorizontal(this._orient) ? this._size?.width : this._size?.height) - controllerPx\n : 0;\n\n // 3. 计算slider滑轨的总占据像素\n const railPx = sliderPx - this.attribute.slider.space;\n\n // 4. 计算起点控件坐标\n const startPx = startControllers.reduce((px, controller) => {\n const {\n key,\n space,\n style: { size }\n } = controller;\n const maxSize = isNumber(size) ? size : max(size[0], size[1]);\n this._layoutInfo[key] = {\n ...this._layoutInfo[key],\n size: maxSize,\n x: isHorizontal(this._orient) ? px + space : (this._size.width - maxSize) / 2,\n y: isHorizontal(this._orient) ? (this._size.height - maxSize) / 2 : px + space\n };\n return px + space + maxSize;\n }, 0);\n\n // 5. 计算slider的起点坐标\n this._layoutInfo.slider = {\n ...this._layoutInfo.slider,\n size: railPx,\n x: isHorizontal(this._orient)\n ? startPx + this.attribute.slider.space\n : (this._size.width - railSectionLength) / 2,\n y: isHorizontal(this._orient)\n ? (this._size.height - railSectionLength) / 2\n : startPx + this.attribute.slider.space\n };\n\n // 6. 计算终点控件坐标\n endControllers.reduce((px, controller) => {\n const {\n key,\n space,\n style: { size }\n } = controller;\n const maxSize = isNumber(size) ? size : max(size[0], size[1]);\n this._layoutInfo[key] = {\n ...this._layoutInfo[key],\n size: maxSize,\n x: isHorizontal(this._orient) ? px + space : (this._size.width - maxSize) / 2,\n y: isHorizontal(this._orient) ? (this._size.height - maxSize) / 2 : px + space\n };\n return px + space + maxSize;\n }, startPx + sliderPx);\n }\n\n /**\n * 初始化滑动条\n */\n private _updateSliderAttrs = () => {\n let handlerSize;\n if (isValidNumber(this._handlerStyle.size)) {\n handlerSize = this._handlerStyle.size;\n } else if (this._handlerStyle.size && this._handlerStyle.size.length) {\n handlerSize = max(this._handlerStyle.size[0], this._handlerStyle.size[1]);\n }\n\n const attrs: SliderAttributes = {\n visible: this._sliderVisible,\n // 重要参数\n min: this._minIndex,\n max: this._maxIndex,\n value: this._dataIndex,\n railWidth: this._railStyle.width,\n railHeight: this._railStyle.height,\n railStyle: this._railStyle,\n trackStyle: this._trackStyle,\n handlerSize: isValidNumber(handlerSize) ? handlerSize : undefined,\n handlerStyle: this._handlerStyle,\n // 不重要, 但需要预设的参数\n dy: this.attribute.slider.dy,\n dx: this.attribute.slider.dx,\n slidable: true,\n range: false,\n handlerText: { visible: false },\n startText: { visible: false },\n endText: { visible: false },\n disableTriggerEvent: this.attribute.disableTriggerEvent\n };\n\n // 横向布局\n if (isHorizontal(this._orient)) {\n // 滑动条水平居中\n const railWidth = Math.max(0, this._layoutInfo.slider.size);\n const railHeight = this._railStyle.height ?? RailDefaultSize[1];\n\n // 属性修改\n attrs.layout = 'horizontal';\n attrs.railHeight = railHeight;\n attrs.railWidth = railWidth;\n attrs.x = this._layoutInfo.slider.x;\n attrs.y = this._layoutInfo.slider.y;\n }\n // 纵向布局\n else {\n // 滑动条垂直居中\n const railHeight = Math.max(0, this._layoutInfo.slider.size);\n const railWidth = this._railStyle.width ?? RailDefaultSize[1];\n\n // 属性修改\n attrs.layout = 'vertical';\n attrs.railWidth = railWidth;\n attrs.railHeight = railHeight;\n attrs.x = this._layoutInfo.slider.x;\n attrs.y = this._layoutInfo.slider.y;\n }\n return attrs;\n };\n\n private _initSlider = () => {\n const attrs = this._updateSliderAttrs();\n this._slider = new Slider(attrs);\n if (this._sliderVisible) {\n this.add(this._slider as unknown as INode);\n }\n };\n\n /**\n * 初始化控制器\n */\n private _updateControllerAttrs = () => {\n const attrs: ControllerAttributes = {\n start: this._start,\n pause: this._pause,\n forward: this._forward,\n backward: this._backward,\n disableTriggerEvent: this.attribute.disableTriggerEvent\n };\n // 横向布局\n if (isHorizontal(this._orient)) {\n attrs.layout = 'horizontal';\n attrs.start = {\n ...attrs.start,\n style: {\n ...attrs.start.style,\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.pause = {\n ...attrs.pause,\n // 暂停按钮, 复用开始按钮的布局\n style: {\n ...attrs.pause.style,\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.backward = {\n ...attrs.backward,\n style: {\n ...attrs.backward.style,\n x: this._layoutInfo.backward.x,\n y: this._layoutInfo.backward.y\n }\n };\n attrs.forward = {\n ...attrs.forward,\n style: {\n ...attrs.forward.style,\n x: this._layoutInfo.forward.x,\n y: this._layoutInfo.forward.y\n }\n };\n }\n // 纵向布局\n else {\n attrs.layout = 'vertical';\n attrs.start = {\n ...attrs.start,\n style: {\n ...attrs.start.style,\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.pause = {\n ...attrs.pause,\n style: {\n ...attrs.pause.style,\n // 暂停按钮, 复用开始按钮的布局\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.backward = {\n ...attrs.backward,\n style: {\n ...attrs.backward.style,\n x: this._layoutInfo.backward.x,\n y: this._layoutInfo.backward.y\n }\n };\n attrs.forward = {\n ...attrs.forward,\n style: {\n ...attrs.forward.style,\n x: this._layoutInfo.forward.x,\n y: this._layoutInfo.forward.y\n }\n };\n }\n return attrs;\n };\n\n private _initController = () => {\n const attrs = this._updateControllerAttrs();\n this._controller = new Controller(attrs);\n if (this._controllerVisible) {\n this.add(this._controller as unknown as INode);\n }\n };\n\n /**\n * 渲染\n */\n render() {\n this._initLayoutInfo();\n this.renderSlider();\n this.renderController();\n }\n\n /**\n * 更新滑动条\n */\n renderSlider() {\n const attrs = this._updateSliderAttrs();\n this._slider.setAttributes(attrs);\n }\n\n /**\n * 更新控制器\n */\n renderController() {\n const attrs = this._updateControllerAttrs();\n this._controller.setAttributes(attrs);\n }\n\n /**\n * 触发事件\n * @param eventType 事件类型\n * @param dataIndex 数据下标\n */\n dispatchCustomEvent(eventType: PlayerEventEnum, dataIndex: number) {\n this._dispatchEvent(eventType, {\n eventType,\n index: dataIndex,\n value: this._data[dataIndex]\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/player/base-player.ts"],"names":[],"mappings":"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","file":"base-player.js","sourcesContent":["import type { INode } from '@visactor/vrender-core';\nimport { isNumber, isValidNumber, max, merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { ComponentOptions, OrientType } from '../interface';\nimport type { SliderAttributes } from '../slider';\nimport { Slider } from '../slider';\nimport type { ControllerAttributes } from './controller';\nimport { Controller } from './controller';\nimport type {\n Datum,\n PlayerEventEnum,\n PlayerAttributes,\n RailStyleType,\n ControllerType,\n TrackStyleType,\n HandlerStyleType\n} from './type';\nimport { RailDefaultSize, defaultControllerAttributes } from './constant';\nimport { isHorizontal } from './utils';\n\n/**\n * 基本播放器组件\n * 提供最基本的布局能力,\n */\nexport class BasePlayer<T> extends AbstractComponent<Required<PlayerAttributes>> {\n static defaultAttributes = {\n visible: true,\n data: [] as Datum[],\n interval: 1000,\n orient: 'bottom',\n align: 'center',\n size: {\n height: 20,\n width: 300\n },\n slider: {\n visible: true,\n space: 10,\n dx: 0,\n dy: 0,\n railStyle: {\n cornerRadius: 5\n },\n trackStyle: {},\n handlerStyle: {}\n },\n controller: {\n visible: true,\n start: { ...defaultControllerAttributes, key: 'start', position: 'start', space: 0 },\n pause: { ...defaultControllerAttributes, key: 'pause', position: 'start' },\n forward: { ...defaultControllerAttributes, key: 'forward', position: 'end' },\n backward: { ...defaultControllerAttributes, key: 'backward', position: 'start' }\n }\n };\n\n // 组件属性\n protected _slider: Slider;\n protected _controller: Controller;\n\n // 数据属性\n protected _data = [] as Datum[];\n protected _minIndex: number;\n protected _maxIndex: number;\n\n // 滑轨属性\n private _sliderVisible: boolean;\n private _railStyle: RailStyleType;\n private _trackStyle: TrackStyleType;\n private _handlerStyle: HandlerStyleType;\n\n // 控件属性\n private _controllerVisible: boolean;\n private _start: ControllerType;\n private _pause: ControllerType;\n private _forward: ControllerType;\n private _backward: ControllerType;\n\n // 布局属性\n private _size: { width: number; height: number };\n private _orient: OrientType;\n\n private _layoutInfo: {\n // 滚动条位置\n slider?: { x: number; y: number; size: number };\n\n // 控件位置\n start?: { x: number; y: number; size: number };\n pause?: { x: number; y: number; size: number };\n backward?: { x: number; y: number; size: number };\n forward?: { x: number; y: number; size: number };\n } = {};\n\n constructor(attributes: T, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, BasePlayer.defaultAttributes, attributes));\n // 先初始化属性, 再初始化Slider、Controller, 最后初始化事件.\n this._initAttributes();\n this._initLayoutInfo();\n this._initController();\n this._initSlider();\n }\n\n /**\n * 初始化属性\n */\n _initAttributes() {\n // 基本布局属性\n this._size = this.attribute.size;\n this._orient = this.attribute.orient;\n\n // Slider范围, 起点一定要从0开始\n this._data = this.attribute.data;\n this._minIndex = 0;\n this._maxIndex = this._data.length - 1;\n\n const { slider = {}, controller = {} as PlayerAttributes['controller'] } = this.attribute;\n // 轨道样式\n this._sliderVisible = slider.visible;\n this._railStyle = { ...slider.railStyle };\n this._trackStyle = { ...slider.trackStyle };\n this._handlerStyle = { ...slider.handlerStyle };\n\n // 控制器样式\n this._controllerVisible = controller.visible;\n this._start = { ...controller.start };\n this._pause = { ...controller.pause };\n this._forward = { ...controller.forward };\n this._backward = { ...controller.backward };\n }\n\n private _initLayoutInfo() {\n // 控制器\n const controllers = [this._start, this._backward, this._forward].sort((a, b) => a.order - b.order);\n // 在开始位置的控制器\n const startControllers = controllers.filter(d => d.position !== 'end');\n // 在结束位置的控制器\n const endControllers = controllers.filter(d => d.position === 'end');\n // 滑轨横切面长度\n const railSectionLength =\n (isHorizontal(this._orient) ? this._railStyle.height : this._railStyle.width) ?? RailDefaultSize[1];\n\n // 1. 计算所有组件自身占据的宽度 or 高度\n const controllerPx = controllers.reduce((len, controller) => {\n const size = controller.style.size;\n const maxSize = isNumber(size) ? size : max(size[0], size[1]);\n return len + controller.space + maxSize;\n }, 0);\n\n // 2. 计算slider的总占据像素\n const sliderPx = this._sliderVisible\n ? (isHorizontal(this._orient) ? this._size?.width : this._size?.height) - controllerPx\n : 0;\n\n // 3. 计算slider滑轨的总占据像素\n const railPx = sliderPx - this.attribute.slider.space;\n\n // 4. 计算起点控件坐标\n const startPx = startControllers.reduce((px, controller) => {\n const {\n key,\n space,\n style: { size }\n } = controller;\n const maxSize = isNumber(size) ? size : max(size[0], size[1]);\n this._layoutInfo[key] = {\n ...this._layoutInfo[key],\n size: maxSize,\n x: isHorizontal(this._orient) ? px + space : (this._size.width - maxSize) / 2,\n y: isHorizontal(this._orient) ? (this._size.height - maxSize) / 2 : px + space\n };\n return px + space + maxSize;\n }, 0);\n\n // 5. 计算slider的起点坐标\n this._layoutInfo.slider = {\n ...this._layoutInfo.slider,\n size: railPx,\n x: isHorizontal(this._orient)\n ? startPx + this.attribute.slider.space\n : (this._size.width - railSectionLength) / 2,\n y: isHorizontal(this._orient)\n ? (this._size.height - railSectionLength) / 2\n : startPx + this.attribute.slider.space\n };\n\n // 6. 计算终点控件坐标\n endControllers.reduce((px, controller) => {\n const {\n key,\n space,\n style: { size }\n } = controller;\n const maxSize = isNumber(size) ? size : max(size[0], size[1]);\n this._layoutInfo[key] = {\n ...this._layoutInfo[key],\n size: maxSize,\n x: isHorizontal(this._orient) ? px + space : (this._size.width - maxSize) / 2,\n y: isHorizontal(this._orient) ? (this._size.height - maxSize) / 2 : px + space\n };\n return px + space + maxSize;\n }, startPx + sliderPx);\n }\n\n /**\n * 初始化滑动条\n */\n private _updateSliderAttrs = () => {\n let handlerSize;\n if (isValidNumber(this._handlerStyle.size)) {\n handlerSize = this._handlerStyle.size;\n } else if (this._handlerStyle.size && this._handlerStyle.size.length) {\n handlerSize = max(this._handlerStyle.size[0], this._handlerStyle.size[1]);\n }\n\n const attrs: SliderAttributes = {\n visible: this._sliderVisible,\n // 重要参数\n min: this._minIndex,\n max: this._maxIndex,\n value: this.attribute.dataIndex ?? 0,\n railWidth: this._railStyle.width,\n railHeight: this._railStyle.height,\n railStyle: this._railStyle,\n trackStyle: this._trackStyle,\n handlerSize: isValidNumber(handlerSize) ? handlerSize : undefined,\n handlerStyle: this._handlerStyle,\n // 不重要, 但需要预设的参数\n dy: this.attribute.slider.dy,\n dx: this.attribute.slider.dx,\n slidable: true,\n range: false,\n handlerText: { visible: false },\n startText: { visible: false },\n endText: { visible: false },\n disableTriggerEvent: this.attribute.disableTriggerEvent\n };\n\n // 横向布局\n if (isHorizontal(this._orient)) {\n // 滑动条水平居中\n const railWidth = Math.max(0, this._layoutInfo.slider.size);\n const railHeight = this._railStyle.height ?? RailDefaultSize[1];\n\n // 属性修改\n attrs.layout = 'horizontal';\n attrs.railHeight = railHeight;\n attrs.railWidth = railWidth;\n attrs.x = this._layoutInfo.slider.x;\n attrs.y = this._layoutInfo.slider.y;\n }\n // 纵向布局\n else {\n // 滑动条垂直居中\n const railHeight = Math.max(0, this._layoutInfo.slider.size);\n const railWidth = this._railStyle.width ?? RailDefaultSize[1];\n\n // 属性修改\n attrs.layout = 'vertical';\n attrs.railWidth = railWidth;\n attrs.railHeight = railHeight;\n attrs.x = this._layoutInfo.slider.x;\n attrs.y = this._layoutInfo.slider.y;\n }\n return attrs;\n };\n\n private _initSlider = () => {\n const attrs = this._updateSliderAttrs();\n this._slider = new Slider(attrs);\n if (this._sliderVisible) {\n this.add(this._slider as unknown as INode);\n }\n };\n\n /**\n * 初始化控制器\n */\n private _updateControllerAttrs = () => {\n const attrs: ControllerAttributes = {\n start: this._start,\n pause: this._pause,\n forward: this._forward,\n backward: this._backward,\n disableTriggerEvent: this.attribute.disableTriggerEvent\n };\n // 横向布局\n if (isHorizontal(this._orient)) {\n attrs.layout = 'horizontal';\n attrs.start = {\n ...attrs.start,\n style: {\n ...attrs.start.style,\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.pause = {\n ...attrs.pause,\n // 暂停按钮, 复用开始按钮的布局\n style: {\n ...attrs.pause.style,\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.backward = {\n ...attrs.backward,\n style: {\n ...attrs.backward.style,\n x: this._layoutInfo.backward.x,\n y: this._layoutInfo.backward.y\n }\n };\n attrs.forward = {\n ...attrs.forward,\n style: {\n ...attrs.forward.style,\n x: this._layoutInfo.forward.x,\n y: this._layoutInfo.forward.y\n }\n };\n }\n // 纵向布局\n else {\n attrs.layout = 'vertical';\n attrs.start = {\n ...attrs.start,\n style: {\n ...attrs.start.style,\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.pause = {\n ...attrs.pause,\n style: {\n ...attrs.pause.style,\n // 暂停按钮, 复用开始按钮的布局\n x: this._layoutInfo.start.x,\n y: this._layoutInfo.start.y\n }\n };\n attrs.backward = {\n ...attrs.backward,\n style: {\n ...attrs.backward.style,\n x: this._layoutInfo.backward.x,\n y: this._layoutInfo.backward.y\n }\n };\n attrs.forward = {\n ...attrs.forward,\n style: {\n ...attrs.forward.style,\n x: this._layoutInfo.forward.x,\n y: this._layoutInfo.forward.y\n }\n };\n }\n return attrs;\n };\n\n private _initController = () => {\n const attrs = this._updateControllerAttrs();\n this._controller = new Controller(attrs);\n if (this._controllerVisible) {\n this.add(this._controller as unknown as INode);\n }\n };\n\n /**\n * 渲染\n */\n render() {\n this._initLayoutInfo();\n this.renderSlider();\n this.renderController();\n }\n\n /**\n * 更新滑动条\n */\n renderSlider() {\n const attrs = this._updateSliderAttrs();\n this._slider.setAttributes(attrs);\n }\n\n /**\n * 更新控制器\n */\n renderController() {\n const attrs = this._updateControllerAttrs();\n this._controller.setAttributes(attrs);\n }\n\n /**\n * 触发事件\n * @param eventType 事件类型\n * @param dataIndex 数据下标\n */\n dispatchCustomEvent(eventType: PlayerEventEnum, dataIndex: number) {\n this._dispatchEvent(eventType, {\n eventType,\n index: dataIndex,\n value: this._data[dataIndex]\n });\n }\n}\n"]}
@@ -9,6 +9,7 @@ export interface IContinuousPlayer {
9
9
  }
10
10
  export declare class ContinuousPlayer extends BasePlayer<ContinuousPlayerAttributes> implements IContinuousPlayer {
11
11
  attribute: ContinuousPlayerAttributes;
12
+ private _dataIndex;
12
13
  private _activeIndex;
13
14
  protected _alternate: boolean;
14
15
  protected _interval: number;
@@ -19,7 +20,6 @@ export declare class ContinuousPlayer extends BasePlayer<ContinuousPlayerAttribu
19
20
  private _rafId;
20
21
  constructor(attributes: ContinuousPlayerAttributes);
21
22
  _initAttributes: () => void;
22
- _initDataIndex: () => void;
23
23
  private _initEvents;
24
24
  private _getSliderValue;
25
25
  private _updateSlider;
@@ -37,16 +37,14 @@ const vrender_core_1 = require("@visactor/vrender-core"), base_player_1 = requir
37
37
  class ContinuousPlayer extends base_player_1.BasePlayer {
38
38
  constructor(attributes) {
39
39
  super(attributes), this._isPlaying = !1, this._startTime = Date.now(), this._initAttributes = () => {
40
- var _a;
40
+ var _a, _b;
41
41
  super._initAttributes(), this._maxIndex = this._data.length, this._slider.setAttribute("max", this._maxIndex),
42
- this._isPlaying = !1, this._elapsed = 0, this._interval = null !== (_a = this.attribute.interval) && void 0 !== _a ? _a : 1e3;
42
+ this._isPlaying = !1, this._elapsed = 0, this._interval = null !== (_a = this.attribute.interval) && void 0 !== _a ? _a : 1e3,
43
+ this._dataIndex = null !== (_b = this.attribute.dataIndex) && void 0 !== _b ? _b : this._minIndex;
43
44
  const frames = this._data.length;
44
45
  this.attribute.totalDuration && this._data.length ? (this._totalDuration = this.attribute.totalDuration,
45
46
  this._interval = this._totalDuration / (null != frames ? frames : 1)) : (this._totalDuration = this._interval * frames,
46
47
  this._interval = this.attribute.interval);
47
- }, this._initDataIndex = () => {
48
- var _a;
49
- this._dataIndex = null !== (_a = this.attribute.dataIndex) && void 0 !== _a ? _a : this._minIndex;
50
48
  }, this._initEvents = () => {
51
49
  this.attribute.disableTriggerEvent || (this._controller.addEventListener(constant_1.ControllerEventEnum.OnPlay, (e => {
52
50
  e.stopPropagation(), this.play();
@@ -97,7 +95,7 @@ class ContinuousPlayer extends base_player_1.BasePlayer {
97
95
  const now = Date.now(), interval = 1 * this._interval, elapsed = this._elapsed + interval;
98
96
  elapsed >= this._totalDuration ? (this._startTime = now - this._totalDuration, this._elapsed = this._totalDuration) : (this._startTime = this._startTime - interval,
99
97
  this._elapsed = elapsed), this._updateSlider(), this.dispatchCustomEvent(type_1.PlayerEventEnum.forward);
100
- }, this._initAttributes(), this._initDataIndex(), this._initEvents();
98
+ }, this._initAttributes(), this._initEvents();
101
99
  }
102
100
  dispatchCustomEvent(eventType) {
103
101
  super.dispatchCustomEvent(eventType, this._dataIndex);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/player/continuous-player.ts"],"names":[],"mappings":"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","file":"continuous-player.js","sourcesContent":["import type { FederatedPointerEvent } from '@visactor/vrender-core';\nimport { vglobal } from '@visactor/vrender-core';\nimport { BasePlayer } from './base-player';\nimport type { ContinuousPlayerAttributes } from './type';\nimport { PlayerEventEnum } from './type';\nimport { ControllerEventEnum } from './controller/constant';\nimport { loadContinuousPlayerComponent } from './register';\n\nexport interface IContinuousPlayer {\n play: () => Promise<void>;\n pause: () => void;\n forward: () => void;\n backward: () => void;\n}\n\nloadContinuousPlayerComponent();\nexport class ContinuousPlayer extends BasePlayer<ContinuousPlayerAttributes> implements IContinuousPlayer {\n declare attribute: ContinuousPlayerAttributes;\n\n private _activeIndex: number;\n\n protected _alternate: boolean;\n protected _interval: number;\n protected _totalDuration: number;\n\n private _isPlaying = false;\n private _startTime: number = Date.now();\n private _elapsed: number;\n private _rafId: number;\n\n constructor(attributes: ContinuousPlayerAttributes) {\n super(attributes);\n\n this._initAttributes();\n this._initDataIndex();\n this._initEvents();\n }\n\n /**\n * 初始化属性\n */\n _initAttributes = () => {\n super._initAttributes();\n // 新增一个占位数据\n this._maxIndex = this._data.length;\n this._slider.setAttribute('max', this._maxIndex);\n\n this._isPlaying = false;\n this._elapsed = 0;\n this._interval = this.attribute.interval ?? 1000;\n\n // 播放帧数(10条数据, 需要10个播放帧)\n const frames = this._data.length;\n\n // 若用户配置了总时长\n if (this.attribute.totalDuration && this._data.length) {\n this._totalDuration = this.attribute.totalDuration;\n // 避免除0\n this._interval = this._totalDuration / (frames ?? 1);\n }\n // 若未配置总时长, 则根据interval算出一个总时长, interval有默认值\n else {\n this._totalDuration = this._interval * frames;\n this._interval = this.attribute.interval;\n }\n };\n\n /**\n * 初始化dataIndex\n */\n _initDataIndex = () => {\n this._dataIndex = this.attribute.dataIndex ?? this._minIndex;\n };\n\n /**\n * 初始化事件\n */\n private _initEvents = () => {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n this._controller.addEventListener(ControllerEventEnum.OnPlay, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.play();\n });\n this._controller.addEventListener(ControllerEventEnum.OnPause, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.pause();\n });\n this._controller.addEventListener(ControllerEventEnum.OnForward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.forward();\n });\n this._controller.addEventListener(ControllerEventEnum.OnBackward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.backward();\n });\n\n this._slider.addEventListener('change', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n /**\n * 根据value, 反推开始时间\n * 1. 计算进度\n * 2. 计算流逝时间\n * 3. 用现在的时间, 模拟一个开始时间\n */\n const value = (e.detail as unknown as { value: number; position: number })?.value;\n const progress = value / this._maxIndex;\n this._elapsed = progress * this._totalDuration;\n this._startTime = Date.now() - this._elapsed;\n\n this._dispatchChange(value);\n });\n };\n\n /**\n * 根据已流逝时间和总时长, 计算slider的值\n */\n private _getSliderValue = () => {\n const progress = this._elapsed / this._totalDuration;\n return Math.min(progress * this._maxIndex, this._maxIndex);\n };\n\n /**\n * 根据流逝时间, 更新Slider的值\n */\n private _updateSlider = () => {\n const value = this._getSliderValue();\n this._dataIndex = Math.floor(value);\n this._slider.setValue(Math.min(value, this._maxIndex));\n this._dispatchChange(Math.floor(value));\n };\n\n /**\n * 根据Slider的值, 判断是否要触发Change事件.\n */\n private _dispatchChange = (value: number) => {\n const index = Math.floor(value);\n if (index !== this._activeIndex) {\n this._dataIndex = index;\n this._activeIndex = index;\n\n if (index !== this._maxIndex) {\n this.dispatchCustomEvent(PlayerEventEnum.change);\n }\n }\n };\n\n /**\n * 派遣事件\n * @param eventType 事件类型\n */\n dispatchCustomEvent(eventType: PlayerEventEnum) {\n super.dispatchCustomEvent(eventType, this._dataIndex);\n }\n\n /**\n * 播放接口\n */\n play = async () => {\n if (this._isPlaying) {\n return;\n }\n // 切换按钮\n this._controller.togglePause();\n // 播放状态更新\n this._isPlaying = true;\n // 播放结束后再点击play, 此条件下生效.\n if (this._elapsed >= this._totalDuration) {\n this._elapsed = 0;\n }\n // 此时此刻减去已流逝的时间, 则为起点对应的时间戳.\n this._startTime = Date.now() - this._elapsed;\n // 事件\n this.dispatchCustomEvent(PlayerEventEnum.play);\n // 开始播放动画\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this));\n };\n\n /**\n * 播放动画主要逻辑\n */\n private _play = () => {\n // 计算已流逝的时间, 但不需要保存\n this._elapsed = Date.now() - this._startTime;\n // 计算Slider的值.\n const value = this._getSliderValue();\n // 更新Slider的值.\n this._updateSlider();\n\n // 播放终止条件\n if (value >= this._maxIndex) {\n this._playEnd();\n return;\n }\n\n // 持续播放\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this));\n };\n\n /**\n * 播放结束时触发\n */\n private _playEnd = () => {\n // 播放状态更新\n this._isPlaying = false;\n // 取消播放动画\n vglobal.getCancelAnimationFrame()(this._rafId);\n // 切换按钮\n this._controller.togglePlay();\n // 事件\n this.dispatchCustomEvent(PlayerEventEnum.end);\n };\n\n /**\n * 暂停接口\n */\n pause = () => {\n if (!this._isPlaying) {\n return;\n }\n this._isPlaying = false;\n // 计算已流逝的时间, 需要记录下来\n this._elapsed = Date.now() - this._startTime;\n vglobal.getCancelAnimationFrame()(this._rafId);\n this._controller.togglePlay();\n\n this.dispatchCustomEvent(PlayerEventEnum.pause);\n };\n\n /**\n * 前进接口\n */\n backward = () => {\n // 按下按钮的时间\n const now = Date.now();\n // 步长\n const interval = this._interval * 1;\n // 流逝时间 减去 interval\n const elapsed = this._elapsed - interval;\n\n // 若到达起点\n if (elapsed <= 0) {\n this._elapsed = 0;\n this._startTime = now;\n }\n // 若未到达起点\n else {\n this._elapsed = elapsed;\n this._startTime = this._startTime + this._interval;\n }\n // 更新slider\n this._updateSlider();\n\n this.dispatchCustomEvent(PlayerEventEnum.backward);\n };\n\n /**\n * 后退接口\n */\n forward = () => {\n // 按下按钮的时间\n const now = Date.now();\n // 步长\n const interval = this._interval * 1;\n // 流逝时间 加上 1个interval\n const elapsed = this._elapsed + interval;\n // 若超过终点\n if (elapsed >= this._totalDuration) {\n this._startTime = now - this._totalDuration;\n this._elapsed = this._totalDuration;\n }\n // 未超过终点\n else {\n this._startTime = this._startTime - interval;\n this._elapsed = elapsed;\n }\n // 更新slider\n this._updateSlider();\n\n this.dispatchCustomEvent(PlayerEventEnum.forward);\n };\n\n render() {\n super.render();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/player/continuous-player.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yDAAiD;AACjD,+CAA2C;AAE3C,iCAAyC;AACzC,oDAA4D;AAC5D,yCAA2D;AAS3D,IAAA,wCAA6B,GAAE,CAAC;AAChC,MAAa,gBAAiB,SAAQ,wBAAsC;IAe1E,YAAY,UAAsC;QAChD,KAAK,CAAC,UAAU,CAAC,CAAC;QANZ,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAcxC,oBAAe,GAAG,GAAG,EAAE;;YACrB,KAAK,CAAC,eAAe,EAAE,CAAC;YAExB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEjD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,mCAAI,IAAI,CAAC;YACjD,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,mCAAI,IAAI,CAAC,SAAS,CAAC;YAG7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAGjC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;gBAEnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,CAAC,CAAC,CAAC;aACtD;iBAEI;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;aAC1C;QACH,CAAC,CAAC;QAKM,gBAAW,GAAG,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;gBACtC,OAAO;aACR;YACD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,8BAAmB,CAAC,MAAM,EAAE,CAAC,CAAwB,EAAE,EAAE;gBACzF,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,8BAAmB,CAAC,OAAO,EAAE,CAAC,CAAwB,EAAE,EAAE;gBAC1F,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,8BAAmB,CAAC,SAAS,EAAE,CAAC,CAAwB,EAAE,EAAE;gBAC5F,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,8BAAmB,CAAC,UAAU,EAAE,CAAC,CAAwB,EAAE,EAAE;gBAC7F,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAwB,EAAE,EAAE;;gBACnE,CAAC,CAAC,eAAe,EAAE,CAAC;gBAOpB,MAAM,KAAK,GAAG,MAAC,CAAC,CAAC,MAAyD,0CAAE,KAAK,CAAC;gBAClF,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;gBAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAE7C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAKM,oBAAe,GAAG,GAAG,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;YACrD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,CAAC,CAAC;QAKM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC;QAKM,oBAAe,GAAG,CAAC,KAAa,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;gBAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAE1B,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;oBAC5B,IAAI,CAAC,mBAAmB,CAAC,sBAAe,CAAC,MAAM,CAAC,CAAC;iBAClD;aACF;QACH,CAAC,CAAC;QAaF,SAAI,GAAG,GAAS,EAAE;YAChB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO;aACR;YAED,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAE/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;gBACxC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aACnB;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE7C,IAAI,CAAC,mBAAmB,CAAC,sBAAe,CAAC,IAAI,CAAC,CAAC;YAE/C,IAAI,CAAC,MAAM,GAAG,sBAAO,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAA,CAAC;QAKM,UAAK,GAAG,GAAG,EAAE;YAEnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAErC,IAAI,CAAC,aAAa,EAAE,CAAC;YAGrB,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,OAAO;aACR;YAGD,IAAI,CAAC,MAAM,GAAG,sBAAO,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC;QAKM,aAAQ,GAAG,GAAG,EAAE;YAEtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,sBAAO,CAAC,uBAAuB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAE9B,IAAI,CAAC,mBAAmB,CAAC,sBAAe,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC;QAKF,UAAK,GAAG,GAAG,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7C,sBAAO,CAAC,uBAAuB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAE9B,IAAI,CAAC,mBAAmB,CAAC,sBAAe,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC;QAKF,aAAQ,GAAG,GAAG,EAAE;YAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAGzC,IAAI,OAAO,IAAI,CAAC,EAAE;gBAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;aACvB;iBAEI;gBACH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;aACpD;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,CAAC,mBAAmB,CAAC,sBAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC;QAKF,YAAO,GAAG,GAAG,EAAE;YAEb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzC,IAAI,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;gBAClC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;gBAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;aACrC;iBAEI;gBACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;aACzB;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,CAAC,mBAAmB,CAAC,sBAAe,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC;QAjPA,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IA8GD,mBAAmB,CAAC,SAA0B;QAC5C,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAiID,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;CACF;AAxQD,4CAwQC","file":"continuous-player.js","sourcesContent":["import type { FederatedPointerEvent } from '@visactor/vrender-core';\nimport { vglobal } from '@visactor/vrender-core';\nimport { BasePlayer } from './base-player';\nimport type { ContinuousPlayerAttributes } from './type';\nimport { PlayerEventEnum } from './type';\nimport { ControllerEventEnum } from './controller/constant';\nimport { loadContinuousPlayerComponent } from './register';\n\nexport interface IContinuousPlayer {\n play: () => Promise<void>;\n pause: () => void;\n forward: () => void;\n backward: () => void;\n}\n\nloadContinuousPlayerComponent();\nexport class ContinuousPlayer extends BasePlayer<ContinuousPlayerAttributes> implements IContinuousPlayer {\n declare attribute: ContinuousPlayerAttributes;\n\n private _dataIndex: number;\n private _activeIndex: number;\n\n protected _alternate: boolean;\n protected _interval: number;\n protected _totalDuration: number;\n\n private _isPlaying = false;\n private _startTime: number = Date.now();\n private _elapsed: number;\n private _rafId: number;\n\n constructor(attributes: ContinuousPlayerAttributes) {\n super(attributes);\n\n this._initAttributes();\n this._initEvents();\n }\n\n /**\n * 初始化属性\n */\n _initAttributes = () => {\n super._initAttributes();\n // 新增一个占位数据\n this._maxIndex = this._data.length;\n this._slider.setAttribute('max', this._maxIndex);\n\n this._isPlaying = false;\n this._elapsed = 0;\n this._interval = this.attribute.interval ?? 1000;\n this._dataIndex = this.attribute.dataIndex ?? this._minIndex;\n\n // 播放帧数(10条数据, 需要10个播放帧)\n const frames = this._data.length;\n\n // 若用户配置了总时长\n if (this.attribute.totalDuration && this._data.length) {\n this._totalDuration = this.attribute.totalDuration;\n // 避免除0\n this._interval = this._totalDuration / (frames ?? 1);\n }\n // 若未配置总时长, 则根据interval算出一个总时长, interval有默认值\n else {\n this._totalDuration = this._interval * frames;\n this._interval = this.attribute.interval;\n }\n };\n\n /**\n * 初始化事件\n */\n private _initEvents = () => {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n this._controller.addEventListener(ControllerEventEnum.OnPlay, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.play();\n });\n this._controller.addEventListener(ControllerEventEnum.OnPause, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.pause();\n });\n this._controller.addEventListener(ControllerEventEnum.OnForward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.forward();\n });\n this._controller.addEventListener(ControllerEventEnum.OnBackward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.backward();\n });\n\n this._slider.addEventListener('change', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n /**\n * 根据value, 反推开始时间\n * 1. 计算进度\n * 2. 计算流逝时间\n * 3. 用现在的时间, 模拟一个开始时间\n */\n const value = (e.detail as unknown as { value: number; position: number })?.value;\n const progress = value / this._maxIndex;\n this._elapsed = progress * this._totalDuration;\n this._startTime = Date.now() - this._elapsed;\n\n this._dispatchChange(value);\n });\n };\n\n /**\n * 根据已流逝时间和总时长, 计算slider的值\n */\n private _getSliderValue = () => {\n const progress = this._elapsed / this._totalDuration;\n return Math.min(progress * this._maxIndex, this._maxIndex);\n };\n\n /**\n * 根据流逝时间, 更新Slider的值\n */\n private _updateSlider = () => {\n const value = this._getSliderValue();\n this._dataIndex = Math.floor(value);\n this._slider.setValue(Math.min(value, this._maxIndex));\n this._dispatchChange(Math.floor(value));\n };\n\n /**\n * 根据Slider的值, 判断是否要触发Change事件.\n */\n private _dispatchChange = (value: number) => {\n const index = Math.floor(value);\n if (index !== this._activeIndex) {\n this._dataIndex = index;\n this._activeIndex = index;\n\n if (index !== this._maxIndex) {\n this.dispatchCustomEvent(PlayerEventEnum.change);\n }\n }\n };\n\n /**\n * 派遣事件\n * @param eventType 事件类型\n */\n dispatchCustomEvent(eventType: PlayerEventEnum) {\n super.dispatchCustomEvent(eventType, this._dataIndex);\n }\n\n /**\n * 播放接口\n */\n play = async () => {\n if (this._isPlaying) {\n return;\n }\n // 切换按钮\n this._controller.togglePause();\n // 播放状态更新\n this._isPlaying = true;\n // 播放结束后再点击play, 此条件下生效.\n if (this._elapsed >= this._totalDuration) {\n this._elapsed = 0;\n }\n // 此时此刻减去已流逝的时间, 则为起点对应的时间戳.\n this._startTime = Date.now() - this._elapsed;\n // 事件\n this.dispatchCustomEvent(PlayerEventEnum.play);\n // 开始播放动画\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this));\n };\n\n /**\n * 播放动画主要逻辑\n */\n private _play = () => {\n // 计算已流逝的时间, 但不需要保存\n this._elapsed = Date.now() - this._startTime;\n // 计算Slider的值.\n const value = this._getSliderValue();\n // 更新Slider的值.\n this._updateSlider();\n\n // 播放终止条件\n if (value >= this._maxIndex) {\n this._playEnd();\n return;\n }\n\n // 持续播放\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this));\n };\n\n /**\n * 播放结束时触发\n */\n private _playEnd = () => {\n // 播放状态更新\n this._isPlaying = false;\n // 取消播放动画\n vglobal.getCancelAnimationFrame()(this._rafId);\n // 切换按钮\n this._controller.togglePlay();\n // 事件\n this.dispatchCustomEvent(PlayerEventEnum.end);\n };\n\n /**\n * 暂停接口\n */\n pause = () => {\n if (!this._isPlaying) {\n return;\n }\n this._isPlaying = false;\n // 计算已流逝的时间, 需要记录下来\n this._elapsed = Date.now() - this._startTime;\n vglobal.getCancelAnimationFrame()(this._rafId);\n this._controller.togglePlay();\n\n this.dispatchCustomEvent(PlayerEventEnum.pause);\n };\n\n /**\n * 前进接口\n */\n backward = () => {\n // 按下按钮的时间\n const now = Date.now();\n // 步长\n const interval = this._interval * 1;\n // 流逝时间 减去 interval\n const elapsed = this._elapsed - interval;\n\n // 若到达起点\n if (elapsed <= 0) {\n this._elapsed = 0;\n this._startTime = now;\n }\n // 若未到达起点\n else {\n this._elapsed = elapsed;\n this._startTime = this._startTime + this._interval;\n }\n // 更新slider\n this._updateSlider();\n\n this.dispatchCustomEvent(PlayerEventEnum.backward);\n };\n\n /**\n * 后退接口\n */\n forward = () => {\n // 按下按钮的时间\n const now = Date.now();\n // 步长\n const interval = this._interval * 1;\n // 流逝时间 加上 1个interval\n const elapsed = this._elapsed + interval;\n // 若超过终点\n if (elapsed >= this._totalDuration) {\n this._startTime = now - this._totalDuration;\n this._elapsed = this._totalDuration;\n }\n // 未超过终点\n else {\n this._startTime = this._startTime - interval;\n this._elapsed = elapsed;\n }\n // 更新slider\n this._updateSlider();\n\n this.dispatchCustomEvent(PlayerEventEnum.forward);\n };\n\n render() {\n super.render();\n }\n}\n"]}
@@ -64,13 +64,13 @@ class Controller extends base_1.AbstractComponent {
64
64
  }, this.renderForward = () => {
65
65
  this._forwardController.setAttributes(this._forwardAttr.style);
66
66
  }, this.play = () => {
67
- this._dispatchEvent(constant_1.ControllerEventEnum.OnPlay);
67
+ this._dispatchEvent("ControllerEventEnum.OnPlay");
68
68
  }, this.pause = () => {
69
- this._dispatchEvent(constant_1.ControllerEventEnum.OnPause);
69
+ this._dispatchEvent("ControllerEventEnum.OnPause");
70
70
  }, this.forward = () => {
71
- this._dispatchEvent(constant_1.ControllerEventEnum.OnForward);
71
+ this._dispatchEvent("ControllerEventEnum.OnForward");
72
72
  }, this.backward = () => {
73
- this._dispatchEvent(constant_1.ControllerEventEnum.OnBackward);
73
+ this._dispatchEvent("ControllerEventEnum.OnBackward");
74
74
  }, this.togglePlay = () => {
75
75
  this._playController.setAttributes(this._startAttr.style), this._isPaused = !0;
76
76
  }, this.togglePause = () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/player/controller/controller.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,0CAAoD;AAGpD,qCAAsF;AACtF,iCAAoC;AACpC,yCAAqE;AAGrE,MAAa,UAAW,SAAQ,wBAAiD;IA4B/E,YAAY,UAAgC,EAAE,OAA0B;QACtE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;QAZzF,cAAS,GAAG,IAAI,CAAC;QAoBzB,qBAAgB,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG;gBAChB,KAAK,8CACH,UAAU,EAAE,iBAAQ,IACjB,UAAU,CAAC,qBAAqB,KACnC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,KAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAC9B;aACF,CAAC;YACF,IAAI,CAAC,UAAU,GAAG;gBAChB,KAAK,8CACH,UAAU,EAAE,kBAAS,IAClB,UAAU,CAAC,qBAAqB,KACnC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,KAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAC9B;aACF,CAAC;YACF,IAAI,CAAC,YAAY,GAAG;gBAClB,KAAK,gDACA,UAAU,CAAC,qBAAqB,KACnC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,KACpC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAChC;aACF,CAAC;YACF,IAAI,CAAC,aAAa,GAAG;gBACnB,KAAK,gDACA,UAAU,CAAC,qBAAqB,KACnC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,KACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CACjC;aACF,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAG,EAAE;;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAErC,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,EAAE;gBACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,mCAAI,iBAAQ,CAAC;gBACtF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,mCAAI,kBAAS,CAAC;aACtF;iBAEI,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE;gBACpC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,mCAAI,eAAM,CAAC;gBACpF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,mCAAI,iBAAQ,CAAC;aACrF;QACH,CAAC,CAAC;QAEM,cAAS,GAAG,GAAG,EAAE;YACvB,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,eAAe,CAAC,EAAE;gBAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,iBAAU,mBAChC,IAAI,CAAC,UAAU,CAAC,KAAK,EACxB,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAChC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;gBACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,iBAAU,mBACpC,IAAI,CAAC,aAAa,CAAC,KAAK,EAC3B,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACpC;QACH,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAG,EAAE;YAC1B,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAU,mBACnC,IAAI,CAAC,YAAY,CAAC,KAAK,EAC1B,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aACnC;QACH,CAAC,CAAC;QAMM,gBAAW,GAAG,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;gBACtC,OAAO;aACR;YACD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAwB,EAAE,EAAE;gBAChF,CAAC,CAAC,eAAe,EAAE,CAAC;gBAEpB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;oBAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;qBAAM;oBACL,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAwB,EAAE,EAAE;gBACpF,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAwB,EAAE,EAAE;gBACnF,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QASF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,eAAe,CAAC,aAAa,iBAChC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAChE,IAAI,CAAC,UAAU,CAAC,KAAK,EACxB,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,aAAa,iBAChC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAChE,IAAI,CAAC,UAAU,CAAC,KAAK,EACxB,CAAC;aACJ;QACH,CAAC,CAAC;QAEF,mBAAc,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC;QAEF,kBAAa,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjE,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,cAAc,CAAC,8BAAmB,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,UAAK,GAAG,GAAG,EAAE;YACX,IAAI,CAAC,cAAc,CAAC,8BAAmB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC;QAEF,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,8BAAmB,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,aAAQ,GAAG,GAAG,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,8BAAmB,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAvKA,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IA6GD,MAAM;QACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;;AArJH,gCAsMC;AArMQ,gCAAqB,GAA4B;IACtD,OAAO,EAAE,IAAI;IACb,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,SAAS;CAClB,CAAC;AACK,4BAAiB,GAAyB;IAC/C,CAAC,6BAAkB,CAAC,KAAK,CAAC,EAAE,EAAE;IAC9B,CAAC,6BAAkB,CAAC,KAAK,CAAC,EAAE,EAAE;IAC9B,CAAC,6BAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE;IACjC,CAAC,6BAAkB,CAAC,OAAO,CAAC,EAAE,EAAE;CACjC,CAAC","file":"controller.js","sourcesContent":["import { isNil, merge } from '@visactor/vutils';\nimport type { FederatedPointerEvent, ISymbolGraphicAttribute } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../../core/base';\nimport type { BaseGraphicAttributes } from '../../core/type';\nimport type { ControllerAttributes, LayoutType } from './type';\nimport { iconRight, iconPause, iconPlay, iconLeft, iconUp, iconDown } from './assets';\nimport { PlayerIcon } from './icon';\nimport { ControllerEventEnum, ControllerTypeEnum } from './constant';\nimport type { ComponentOptions } from '../../interface';\n\nexport class Controller extends AbstractComponent<Required<ControllerAttributes>> {\n static defaultControllerAttr: ISymbolGraphicAttribute = {\n visible: true,\n x: 0,\n y: 0,\n size: 20,\n fill: '#91caff',\n pickMode: 'imprecise',\n cursor: 'pointer'\n };\n static defaultAttributes: ControllerAttributes = {\n [ControllerTypeEnum.Start]: {},\n [ControllerTypeEnum.Pause]: {},\n [ControllerTypeEnum.Backward]: {},\n [ControllerTypeEnum.Forward]: {}\n };\n\n private _isPaused = true;\n private _playController: PlayerIcon;\n private _forwardController: PlayerIcon;\n private _backwardController: PlayerIcon;\n\n private _layout: LayoutType;\n private _startAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n private _pauseAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n private _forwardAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n private _backwardAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n\n constructor(attributes: ControllerAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Controller.defaultAttributes, attributes));\n this.updateAttributes();\n this._initPlay();\n this._initBackward();\n this._initForward();\n this._initEvents();\n }\n\n updateAttributes = () => {\n this._startAttr = {\n style: {\n symbolType: iconPlay,\n ...Controller.defaultControllerAttr,\n visible: this.attribute.start.visible,\n ...this.attribute.start.style\n }\n };\n this._pauseAttr = {\n style: {\n symbolType: iconPause,\n ...Controller.defaultControllerAttr,\n visible: this.attribute.pause.visible,\n ...this.attribute.pause.style\n }\n };\n this._forwardAttr = {\n style: {\n ...Controller.defaultControllerAttr,\n visible: this.attribute.forward.visible,\n ...this.attribute.forward.style\n }\n };\n this._backwardAttr = {\n style: {\n ...Controller.defaultControllerAttr,\n visible: this.attribute.backward.visible,\n ...this.attribute.backward.style\n }\n };\n this.updateLayout();\n };\n\n private updateLayout = () => {\n this._layout = this.attribute.layout;\n // 若水平布局\n if (this._layout === 'horizontal') {\n this._backwardAttr.style.symbolType = this._backwardAttr.style.symbolType ?? iconLeft;\n this._forwardAttr.style.symbolType = this._forwardAttr.style.symbolType ?? iconRight;\n }\n // 若垂直布局\n else if (this._layout === 'vertical') {\n this._backwardAttr.style.symbolType = this._backwardAttr.style.symbolType ?? iconUp;\n this._forwardAttr.style.symbolType = this._forwardAttr.style.symbolType ?? iconDown;\n }\n };\n\n private _initPlay = () => {\n if (isNil(this._playController)) {\n this._playController = new PlayerIcon({\n ...this._startAttr.style\n });\n\n this.add(this._playController);\n }\n };\n\n private _initBackward = () => {\n if (isNil(this._backwardController)) {\n this._backwardController = new PlayerIcon({\n ...this._backwardAttr.style\n });\n\n this.add(this._backwardController);\n }\n };\n\n private _initForward = () => {\n if (isNil(this._forwardController)) {\n this._forwardController = new PlayerIcon({\n ...this._forwardAttr.style\n });\n\n this.add(this._forwardController);\n }\n };\n\n /**\n * 初始化事件\n * 1. 注册\n */\n private _initEvents = () => {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n this._playController.addEventListener('pointerdown', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n\n if (this._isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n });\n\n this._backwardController.addEventListener('pointerdown', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.backward();\n });\n\n this._forwardController.addEventListener('pointerdown', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.forward();\n });\n };\n\n render(): void {\n this.updateAttributes();\n this.renderPlay();\n this.renderBackward();\n this.renderForward();\n }\n\n renderPlay = () => {\n if (this._isPaused) {\n this._playController.setAttributes({\n symbolType: this._playController.getComputedAttribute('symbolType'),\n ...this._startAttr.style\n });\n } else {\n this._playController.setAttributes({\n symbolType: this._playController.getComputedAttribute('symbolType'),\n ...this._pauseAttr.style\n });\n }\n };\n\n renderBackward = () => {\n this._backwardController.setAttributes(this._backwardAttr.style);\n };\n\n renderForward = () => {\n this._forwardController.setAttributes(this._forwardAttr.style);\n };\n\n play = () => {\n this._dispatchEvent(ControllerEventEnum.OnPlay);\n };\n\n pause = () => {\n this._dispatchEvent(ControllerEventEnum.OnPause);\n };\n\n forward = () => {\n this._dispatchEvent(ControllerEventEnum.OnForward);\n };\n\n backward = () => {\n this._dispatchEvent(ControllerEventEnum.OnBackward);\n };\n\n togglePlay = () => {\n this._playController.setAttributes(this._startAttr.style);\n this._isPaused = true;\n };\n\n togglePause = () => {\n this._playController.setAttributes(this._pauseAttr.style);\n this._isPaused = false;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/player/controller/controller.ts"],"names":[],"mappings":"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","file":"controller.js","sourcesContent":["import { isNil, merge } from '@visactor/vutils';\nimport type { FederatedPointerEvent, ISymbolGraphicAttribute } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../../core/base';\nimport type { BaseGraphicAttributes } from '../../core/type';\nimport type { ControllerAttributes, LayoutType } from './type';\nimport { iconRight, iconPause, iconPlay, iconLeft, iconUp, iconDown } from './assets';\nimport { PlayerIcon } from './icon';\nimport { ControllerTypeEnum } from './constant';\nimport type { ComponentOptions } from '../../interface';\n\nexport class Controller extends AbstractComponent<Required<ControllerAttributes>> {\n static defaultControllerAttr: ISymbolGraphicAttribute = {\n visible: true,\n x: 0,\n y: 0,\n size: 20,\n fill: '#91caff',\n pickMode: 'imprecise',\n cursor: 'pointer'\n };\n static defaultAttributes: ControllerAttributes = {\n [ControllerTypeEnum.Start]: {},\n [ControllerTypeEnum.Pause]: {},\n [ControllerTypeEnum.Backward]: {},\n [ControllerTypeEnum.Forward]: {}\n };\n\n private _isPaused = true;\n private _playController: PlayerIcon;\n private _forwardController: PlayerIcon;\n private _backwardController: PlayerIcon;\n\n private _layout: LayoutType;\n private _startAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n private _pauseAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n private _forwardAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n private _backwardAttr: BaseGraphicAttributes<ISymbolGraphicAttribute>;\n\n constructor(attributes: ControllerAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Controller.defaultAttributes, attributes));\n this.updateAttributes();\n this._initPlay();\n this._initBackward();\n this._initForward();\n this._initEvents();\n }\n\n updateAttributes = () => {\n this._startAttr = {\n style: {\n symbolType: iconPlay,\n ...Controller.defaultControllerAttr,\n visible: this.attribute.start.visible,\n ...this.attribute.start.style\n }\n };\n this._pauseAttr = {\n style: {\n symbolType: iconPause,\n ...Controller.defaultControllerAttr,\n visible: this.attribute.pause.visible,\n ...this.attribute.pause.style\n }\n };\n this._forwardAttr = {\n style: {\n ...Controller.defaultControllerAttr,\n visible: this.attribute.forward.visible,\n ...this.attribute.forward.style\n }\n };\n this._backwardAttr = {\n style: {\n ...Controller.defaultControllerAttr,\n visible: this.attribute.backward.visible,\n ...this.attribute.backward.style\n }\n };\n this.updateLayout();\n };\n\n private updateLayout = () => {\n this._layout = this.attribute.layout;\n // 若水平布局\n if (this._layout === 'horizontal') {\n this._backwardAttr.style.symbolType = this._backwardAttr.style.symbolType ?? iconLeft;\n this._forwardAttr.style.symbolType = this._forwardAttr.style.symbolType ?? iconRight;\n }\n // 若垂直布局\n else if (this._layout === 'vertical') {\n this._backwardAttr.style.symbolType = this._backwardAttr.style.symbolType ?? iconUp;\n this._forwardAttr.style.symbolType = this._forwardAttr.style.symbolType ?? iconDown;\n }\n };\n\n private _initPlay = () => {\n if (isNil(this._playController)) {\n this._playController = new PlayerIcon({\n ...this._startAttr.style\n });\n\n this.add(this._playController);\n }\n };\n\n private _initBackward = () => {\n if (isNil(this._backwardController)) {\n this._backwardController = new PlayerIcon({\n ...this._backwardAttr.style\n });\n\n this.add(this._backwardController);\n }\n };\n\n private _initForward = () => {\n if (isNil(this._forwardController)) {\n this._forwardController = new PlayerIcon({\n ...this._forwardAttr.style\n });\n\n this.add(this._forwardController);\n }\n };\n\n /**\n * 初始化事件\n * 1. 注册\n */\n private _initEvents = () => {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n this._playController.addEventListener('pointerdown', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n\n if (this._isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n });\n\n this._backwardController.addEventListener('pointerdown', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.backward();\n });\n\n this._forwardController.addEventListener('pointerdown', (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.forward();\n });\n };\n\n render(): void {\n this.updateAttributes();\n this.renderPlay();\n this.renderBackward();\n this.renderForward();\n }\n\n renderPlay = () => {\n if (this._isPaused) {\n this._playController.setAttributes({\n symbolType: this._playController.getComputedAttribute('symbolType'),\n ...this._startAttr.style\n });\n } else {\n this._playController.setAttributes({\n symbolType: this._playController.getComputedAttribute('symbolType'),\n ...this._pauseAttr.style\n });\n }\n };\n\n renderBackward = () => {\n this._backwardController.setAttributes(this._backwardAttr.style);\n };\n\n renderForward = () => {\n this._forwardController.setAttributes(this._forwardAttr.style);\n };\n\n play = () => {\n this._dispatchEvent('ControllerEventEnum.OnPlay');\n };\n\n pause = () => {\n this._dispatchEvent('ControllerEventEnum.OnPause');\n };\n\n forward = () => {\n this._dispatchEvent('ControllerEventEnum.OnForward');\n };\n\n backward = () => {\n this._dispatchEvent('ControllerEventEnum.OnBackward');\n };\n\n togglePlay = () => {\n this._playController.setAttributes(this._startAttr.style);\n this._isPaused = true;\n };\n\n togglePause = () => {\n this._playController.setAttributes(this._pauseAttr.style);\n this._isPaused = false;\n };\n}\n"]}
@@ -10,6 +10,7 @@ export interface IDiscretePlayer {
10
10
  }
11
11
  export declare class DiscretePlayer extends BasePlayer<DiscretePlayerAttributes> implements IDiscretePlayer {
12
12
  attribute: DiscretePlayerAttributes;
13
+ private _dataIndex;
13
14
  private _activeIndex;
14
15
  protected _alternate: boolean;
15
16
  protected _interval: number;
@@ -21,7 +22,6 @@ export declare class DiscretePlayer extends BasePlayer<DiscretePlayerAttributes>
21
22
  constructor(attributes: DiscretePlayerAttributes, options?: ComponentOptions);
22
23
  setAttributes(params: Partial<Required<PlayerAttributes>>, forceUpdateTag?: boolean): void;
23
24
  _initAttributes: () => void;
24
- _initDataIndex: () => void;
25
25
  private _initEvents;
26
26
  dispatchCustomEvent(event: PlayerEventEnum): void;
27
27
  play: () => void;
@@ -12,13 +12,11 @@ class DiscretePlayer extends base_player_1.BasePlayer {
12
12
  constructor(attributes, options) {
13
13
  super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, attributes)),
14
14
  this._activeIndex = -1, this._isReachEnd = !1, this._initAttributes = () => {
15
- var _a, _b, _c;
15
+ var _a, _b, _c, _d;
16
16
  super._initAttributes(), this._alternate = null !== (_a = this.attribute.alternate) && void 0 !== _a && _a,
17
17
  this._interval = null !== (_b = this.attribute.interval) && void 0 !== _b ? _b : 1e3,
18
- this._direction = null !== (_c = this.attribute.direction) && void 0 !== _c ? _c : type_1.DirectionEnum.Default;
19
- }, this._initDataIndex = () => {
20
- var _a;
21
- this._dataIndex = (0, vutils_1.isNil)(this.attribute.dataIndex) ? "default" === this._direction ? this._minIndex : this._maxIndex : null !== (_a = this.attribute.dataIndex) && void 0 !== _a ? _a : 0,
18
+ this._direction = null !== (_c = this.attribute.direction) && void 0 !== _c ? _c : type_1.DirectionEnum.Default,
19
+ this._dataIndex = (0, vutils_1.isNil)(this.attribute.dataIndex) ? "default" === this._direction ? this._minIndex : this._maxIndex : null !== (_d = this.attribute.dataIndex) && void 0 !== _d ? _d : 0,
22
20
  this._slider.setAttribute("value", this._dataIndex);
23
21
  }, this._initEvents = () => {
24
22
  this.attribute.disableTriggerEvent || (this._controller.addEventListener(constant_1.ControllerEventEnum.OnPlay, (e => {
@@ -75,7 +73,7 @@ class DiscretePlayer extends base_player_1.BasePlayer {
75
73
  const index = Math.min(this._dataIndex + 1, this._maxIndex);
76
74
  this._updateDataIndex(index), this.dispatchCustomEvent(type_1.PlayerEventEnum.change),
77
75
  this.dispatchCustomEvent(type_1.PlayerEventEnum.forward);
78
- }, this._initAttributes(), this._initDataIndex(), this._initEvents();
76
+ }, this._initAttributes(), this._initEvents();
79
77
  }
80
78
  setAttributes(params, forceUpdateTag) {
81
79
  super.setAttributes(params, forceUpdateTag), this._initAttributes();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/player/discrete-player.ts"],"names":[],"mappings":"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","file":"discrete-player.js","sourcesContent":["import { isNil, merge } from '@visactor/vutils';\nimport type { FederatedPointerEvent } from '@visactor/vrender-core';\nimport { vglobal } from '@visactor/vrender-core';\nimport { BasePlayer } from './base-player';\nimport type { DirectionType, DiscretePlayerAttributes, PlayerAttributes } from './type';\nimport { DirectionEnum, PlayerEventEnum } from './type';\nimport { forwardStep, isReachEnd, isReachStart } from './utils';\nimport { ControllerEventEnum } from './controller/constant';\nimport type { ComponentOptions } from '../interface';\nimport { loadDiscretePlayerComponent } from './register';\n\nexport interface IDiscretePlayer {\n play: () => void;\n pause: () => void;\n backward: () => void;\n forward: () => void;\n}\n\nloadDiscretePlayerComponent();\nexport class DiscretePlayer extends BasePlayer<DiscretePlayerAttributes> implements IDiscretePlayer {\n declare attribute: DiscretePlayerAttributes;\n\n private _activeIndex = -1;\n\n protected _alternate: boolean;\n protected _interval: number;\n\n private _isPlaying: boolean;\n private _direction: DirectionType;\n private _tickTime: number;\n private _rafId: number;\n private _isReachEnd = false;\n\n constructor(attributes: DiscretePlayerAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, attributes));\n\n this._initAttributes();\n this._initDataIndex();\n this._initEvents();\n }\n\n setAttributes(params: Partial<Required<PlayerAttributes>>, forceUpdateTag?: boolean): void {\n super.setAttributes(params, forceUpdateTag);\n this._initAttributes();\n }\n\n /**\n * 初始化属性\n */\n _initAttributes = () => {\n super._initAttributes();\n this._alternate = this.attribute.alternate ?? false;\n this._interval = this.attribute.interval ?? 1000;\n this._direction = this.attribute.direction ?? DirectionEnum.Default;\n };\n\n /**\n * 初始化dataIndex\n */\n _initDataIndex = () => {\n this._dataIndex = isNil(this.attribute.dataIndex)\n ? this._direction === 'default'\n ? this._minIndex\n : this._maxIndex\n : this.attribute.dataIndex ?? 0;\n\n this._slider.setAttribute('value', this._dataIndex);\n };\n\n /**\n * 初始化事件\n */\n private _initEvents = () => {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n this._controller.addEventListener(ControllerEventEnum.OnPlay, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.play();\n });\n this._controller.addEventListener(ControllerEventEnum.OnPause, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.pause();\n });\n this._controller.addEventListener(ControllerEventEnum.OnForward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.forward();\n });\n this._controller.addEventListener(ControllerEventEnum.OnBackward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.backward();\n });\n\n this._slider.addEventListener('change', (e: FederatedPointerEvent & { detail: { value: number } }) => {\n const middle = Math.floor(e.detail.value) + 0.5;\n this._dataIndex = e.detail.value >= middle ? Math.ceil(e.detail.value) : Math.floor(e.detail.value);\n this._slider.setValue(this._dataIndex);\n this.dispatchCustomEvent(PlayerEventEnum.change);\n });\n };\n\n /**\n * 派遣事件\n */\n dispatchCustomEvent(event: PlayerEventEnum) {\n super.dispatchCustomEvent(event, this._dataIndex);\n }\n\n /**\n * 播放接口\n */\n play = () => {\n if (this._isPlaying) {\n return;\n }\n // 一条数据无需播放\n if (this._data.length === 1) {\n return;\n }\n // 图标切换\n this._controller.togglePause();\n // 播放状态更新\n this._isPlaying = true;\n // 若到达末尾, 则计算下一次播放的状态下标\n if (\n isReachEnd({\n dataIndex: this._dataIndex,\n maxIndex: this._maxIndex,\n minIndex: this._minIndex,\n direction: this._direction\n }) ||\n isReachStart({\n dataIndex: this._dataIndex,\n maxIndex: this._maxIndex,\n minIndex: this._minIndex,\n direction: this._direction\n })\n ) {\n // 根据方向恢复dataIndex\n if (this._direction === DirectionEnum.Default) {\n this._updateDataIndex(this._minIndex);\n } else {\n this._updateDataIndex(this._maxIndex);\n }\n }\n\n // 事件触发\n this.dispatchCustomEvent(PlayerEventEnum.play);\n // 重置结束状态\n this._isReachEnd = false;\n // 重置tick时间, 暂停后重新播放也会重新计时\n this._tickTime = Date.now();\n // 开启动画\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this, true));\n };\n\n /**\n * 播放过程\n */\n private _play = (isFirstPlay: boolean) => {\n const now = Date.now();\n\n // 抵达终点, 延迟一个interval触发end\n if (this._isReachEnd && now - this._tickTime >= this._interval) {\n this._isReachEnd = false;\n this._playEnd();\n return;\n }\n // 未达终点\n\n // 第一个播放帧, 立即执行\n if (isFirstPlay && this._activeIndex !== this._dataIndex) {\n this.dispatchCustomEvent(PlayerEventEnum.change);\n this._activeIndex = this._dataIndex;\n }\n // 中间播放帧, 每一个interval执行一次\n else if (now - this._tickTime >= this._interval) {\n this._tickTime = now;\n this._updateDataIndex(forwardStep(this._direction, this._dataIndex, this._minIndex, this._maxIndex));\n this._activeIndex = this._dataIndex;\n this.dispatchCustomEvent(PlayerEventEnum.change);\n }\n\n // 终止条件\n if (\n (this._direction === 'default' && this._dataIndex >= this._maxIndex) ||\n (this._direction === 'reverse' && this._dataIndex <= this._minIndex)\n ) {\n this._isReachEnd = true;\n }\n\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this, false));\n };\n\n /**\n * 更新数据\n */\n private _updateDataIndex = (dataIndex: number) => {\n this._dataIndex = dataIndex;\n this._slider.setValue(this._dataIndex);\n };\n\n /**\n * 播放结束\n */\n private _playEnd = () => {\n // 播放状态更新\n this._isPlaying = false;\n // 图标切换\n this._controller.togglePlay();\n // 取消播放动画\n vglobal.getCancelAnimationFrame()(this._rafId);\n // 重置ActiveIndex\n this._activeIndex = -1;\n // 播放结束时并且到达终点\n this.dispatchCustomEvent(PlayerEventEnum.end);\n };\n\n /**\n * 暂停接口\n */\n pause = () => {\n if (!this._isPlaying) {\n return;\n }\n this._isPlaying = false;\n vglobal.getCancelAnimationFrame()(this._rafId);\n this._controller.togglePlay();\n\n this.dispatchCustomEvent(PlayerEventEnum.pause);\n };\n\n /**\n * 后退接口\n */\n backward = () => {\n const index = Math.max(this._dataIndex - 1, this._minIndex);\n this._updateDataIndex(index);\n\n this.dispatchCustomEvent(PlayerEventEnum.change);\n this.dispatchCustomEvent(PlayerEventEnum.backward);\n };\n\n /**\n * 前进接口\n */\n forward = () => {\n const index = Math.min(this._dataIndex + 1, this._maxIndex);\n this._updateDataIndex(index);\n\n this.dispatchCustomEvent(PlayerEventEnum.change);\n this.dispatchCustomEvent(PlayerEventEnum.forward);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/player/discrete-player.ts"],"names":[],"mappings":"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","file":"discrete-player.js","sourcesContent":["import { isNil, merge } from '@visactor/vutils';\nimport type { FederatedPointerEvent } from '@visactor/vrender-core';\nimport { vglobal } from '@visactor/vrender-core';\nimport { BasePlayer } from './base-player';\nimport type { DirectionType, DiscretePlayerAttributes, PlayerAttributes } from './type';\nimport { DirectionEnum, PlayerEventEnum } from './type';\nimport { forwardStep, isReachEnd, isReachStart } from './utils';\nimport { ControllerEventEnum } from './controller/constant';\nimport type { ComponentOptions } from '../interface';\nimport { loadDiscretePlayerComponent } from './register';\n\nexport interface IDiscretePlayer {\n play: () => void;\n pause: () => void;\n backward: () => void;\n forward: () => void;\n}\n\nloadDiscretePlayerComponent();\nexport class DiscretePlayer extends BasePlayer<DiscretePlayerAttributes> implements IDiscretePlayer {\n declare attribute: DiscretePlayerAttributes;\n\n private _dataIndex: number;\n private _activeIndex = -1;\n\n protected _alternate: boolean;\n protected _interval: number;\n\n private _isPlaying: boolean;\n private _direction: DirectionType;\n private _tickTime: number;\n private _rafId: number;\n private _isReachEnd = false;\n\n constructor(attributes: DiscretePlayerAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, attributes));\n\n this._initAttributes();\n this._initEvents();\n }\n\n setAttributes(params: Partial<Required<PlayerAttributes>>, forceUpdateTag?: boolean): void {\n super.setAttributes(params, forceUpdateTag);\n\n this._initAttributes();\n }\n\n /**\n * 初始化属性\n */\n _initAttributes = () => {\n super._initAttributes();\n this._alternate = this.attribute.alternate ?? false;\n this._interval = this.attribute.interval ?? 1000;\n this._direction = this.attribute.direction ?? DirectionEnum.Default;\n\n this._dataIndex = isNil(this.attribute.dataIndex)\n ? this._direction === 'default'\n ? this._minIndex\n : this._maxIndex\n : this.attribute.dataIndex ?? 0;\n\n this._slider.setAttribute('value', this._dataIndex);\n };\n\n /**\n * 初始化事件\n */\n private _initEvents = () => {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n this._controller.addEventListener(ControllerEventEnum.OnPlay, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.play();\n });\n this._controller.addEventListener(ControllerEventEnum.OnPause, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.pause();\n });\n this._controller.addEventListener(ControllerEventEnum.OnForward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.forward();\n });\n this._controller.addEventListener(ControllerEventEnum.OnBackward, (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this.backward();\n });\n\n this._slider.addEventListener('change', (e: FederatedPointerEvent & { detail: { value: number } }) => {\n const middle = Math.floor(e.detail.value) + 0.5;\n this._dataIndex = e.detail.value >= middle ? Math.ceil(e.detail.value) : Math.floor(e.detail.value);\n this._slider.setValue(this._dataIndex);\n this.dispatchCustomEvent(PlayerEventEnum.change);\n });\n };\n\n /**\n * 派遣事件\n */\n dispatchCustomEvent(event: PlayerEventEnum) {\n super.dispatchCustomEvent(event, this._dataIndex);\n }\n\n /**\n * 播放接口\n */\n play = () => {\n if (this._isPlaying) {\n return;\n }\n // 一条数据无需播放\n if (this._data.length === 1) {\n return;\n }\n // 图标切换\n this._controller.togglePause();\n // 播放状态更新\n this._isPlaying = true;\n // 若到达末尾, 则计算下一次播放的状态下标\n if (\n isReachEnd({\n dataIndex: this._dataIndex,\n maxIndex: this._maxIndex,\n minIndex: this._minIndex,\n direction: this._direction\n }) ||\n isReachStart({\n dataIndex: this._dataIndex,\n maxIndex: this._maxIndex,\n minIndex: this._minIndex,\n direction: this._direction\n })\n ) {\n // 根据方向恢复dataIndex\n if (this._direction === DirectionEnum.Default) {\n this._updateDataIndex(this._minIndex);\n } else {\n this._updateDataIndex(this._maxIndex);\n }\n }\n\n // 事件触发\n this.dispatchCustomEvent(PlayerEventEnum.play);\n // 重置结束状态\n this._isReachEnd = false;\n // 重置tick时间, 暂停后重新播放也会重新计时\n this._tickTime = Date.now();\n // 开启动画\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this, true));\n };\n\n /**\n * 播放过程\n */\n private _play = (isFirstPlay: boolean) => {\n const now = Date.now();\n\n // 抵达终点, 延迟一个interval触发end\n if (this._isReachEnd && now - this._tickTime >= this._interval) {\n this._isReachEnd = false;\n this._playEnd();\n return;\n }\n // 未达终点\n\n // 第一个播放帧, 立即执行\n if (isFirstPlay && this._activeIndex !== this._dataIndex) {\n this.dispatchCustomEvent(PlayerEventEnum.change);\n this._activeIndex = this._dataIndex;\n }\n // 中间播放帧, 每一个interval执行一次\n else if (now - this._tickTime >= this._interval) {\n this._tickTime = now;\n this._updateDataIndex(forwardStep(this._direction, this._dataIndex, this._minIndex, this._maxIndex));\n this._activeIndex = this._dataIndex;\n this.dispatchCustomEvent(PlayerEventEnum.change);\n }\n\n // 终止条件\n if (\n (this._direction === 'default' && this._dataIndex >= this._maxIndex) ||\n (this._direction === 'reverse' && this._dataIndex <= this._minIndex)\n ) {\n this._isReachEnd = true;\n }\n\n this._rafId = vglobal.getRequestAnimationFrame()(this._play.bind(this, false));\n };\n\n /**\n * 更新数据\n */\n private _updateDataIndex = (dataIndex: number) => {\n this._dataIndex = dataIndex;\n this._slider.setValue(this._dataIndex);\n };\n\n /**\n * 播放结束\n */\n private _playEnd = () => {\n // 播放状态更新\n this._isPlaying = false;\n // 图标切换\n this._controller.togglePlay();\n // 取消播放动画\n vglobal.getCancelAnimationFrame()(this._rafId);\n // 重置ActiveIndex\n this._activeIndex = -1;\n // 播放结束时并且到达终点\n this.dispatchCustomEvent(PlayerEventEnum.end);\n };\n\n /**\n * 暂停接口\n */\n pause = () => {\n if (!this._isPlaying) {\n return;\n }\n this._isPlaying = false;\n vglobal.getCancelAnimationFrame()(this._rafId);\n this._controller.togglePlay();\n\n this.dispatchCustomEvent(PlayerEventEnum.pause);\n };\n\n /**\n * 后退接口\n */\n backward = () => {\n const index = Math.max(this._dataIndex - 1, this._minIndex);\n this._updateDataIndex(index);\n\n this.dispatchCustomEvent(PlayerEventEnum.change);\n this.dispatchCustomEvent(PlayerEventEnum.backward);\n };\n\n /**\n * 前进接口\n */\n forward = () => {\n const index = Math.min(this._dataIndex + 1, this._maxIndex);\n this._updateDataIndex(index);\n\n this.dispatchCustomEvent(PlayerEventEnum.change);\n this.dispatchCustomEvent(PlayerEventEnum.forward);\n };\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { IArc } from '@visactor/vrender-core';
2
+ import type { ArcSegmentAttributes } from './type';
3
+ import type { Point } from '../core/type';
4
+ import type { ComponentOptions } from '../interface';
5
+ import { Segment } from './segment';
6
+ export declare class ArcSegment extends Segment {
7
+ name: string;
8
+ line?: IArc;
9
+ constructor(attributes: ArcSegmentAttributes, options?: ComponentOptions);
10
+ getMainSegmentPoints(): Point[];
11
+ protected _computeRotate(angle: number): number;
12
+ protected render(): void;
13
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ArcSegment = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), vrender_core_1 = require("@visactor/vrender-core"), register_1 = require("./register"), segment_1 = require("./segment");
8
+
9
+ (0, register_1.loadArcSegmentComponent)();
10
+
11
+ class ArcSegment extends segment_1.Segment {
12
+ constructor(attributes, options) {
13
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, segment_1.Segment.defaultAttributes, attributes)),
14
+ this.name = "arc-segment";
15
+ }
16
+ getMainSegmentPoints() {
17
+ return this._mainSegmentPoints;
18
+ }
19
+ _computeRotate(angle) {
20
+ return angle + Math.PI;
21
+ }
22
+ render() {
23
+ this.removeAllChild(!0), this._reset();
24
+ const {startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle, state: state, visible: visible = !0, radius: radius, startAngle: startAngle, endAngle: endAngle, center: center} = this.attribute;
25
+ if (!visible) return;
26
+ this._startAngle = startAngle, this._endAngle = endAngle;
27
+ const startPoint = {
28
+ x: center.x + radius * Math.cos(this._startAngle),
29
+ y: center.y + radius * Math.sin(this._startAngle)
30
+ }, endPoint = {
31
+ x: center.x + radius * Math.cos(this._endAngle),
32
+ y: center.y + radius * Math.sin(this._endAngle)
33
+ };
34
+ this._mainSegmentPoints = [ startPoint, endPoint ];
35
+ const startSymbolShape = this._renderSymbol(startSymbol, this._mainSegmentPoints, "start"), endSymbolShape = this._renderSymbol(endSymbol, this._mainSegmentPoints, "end");
36
+ this.startSymbol = startSymbolShape, this.endSymbol = endSymbolShape;
37
+ const line = vrender_core_1.graphicCreator.arc(Object.assign({
38
+ x: center.x,
39
+ y: center.y,
40
+ startAngle: startAngle,
41
+ endAngle: endAngle,
42
+ innerRadius: radius,
43
+ outerRadius: radius
44
+ }, lineStyle));
45
+ line.name = `${this.name}-line`, line.id = this._getNodeId("arc"), (0, vutils_1.isEmpty)(null == state ? void 0 : state.line) || (line.states = [].concat(state.line)[0]),
46
+ this.add(line), this.line = line;
47
+ }
48
+ }
49
+
50
+ exports.ArcSegment = ArcSegment;
51
+ //# sourceMappingURL=arc-segment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/segment/arc-segment.ts"],"names":[],"mappings":"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","file":"arc-segment.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport { isEmpty, merge } from '@visactor/vutils';\nimport type { IArc } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { ArcSegmentAttributes, SymbolAttributes } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadArcSegmentComponent } from './register';\nimport { Segment } from './segment';\n\nloadArcSegmentComponent();\nexport class ArcSegment extends Segment {\n name = 'arc-segment';\n line?: IArc;\n\n constructor(attributes: ArcSegmentAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Segment.defaultAttributes, attributes));\n }\n\n getMainSegmentPoints() {\n return this._mainSegmentPoints;\n }\n\n protected _computeRotate(angle: number) {\n return angle + Math.PI;\n }\n\n protected render() {\n this.removeAllChild(true);\n this._reset();\n const {\n // points,\n startSymbol,\n endSymbol,\n lineStyle,\n state,\n visible = true,\n radius,\n startAngle,\n endAngle,\n center\n } = this.attribute as ArcSegmentAttributes;\n\n if (!visible) {\n return;\n }\n\n this._startAngle = startAngle;\n this._endAngle = endAngle;\n\n // 绘制start和end symbol\n const startPoint: Point = {\n x: center.x + radius * Math.cos(this._startAngle),\n y: center.y + radius * Math.sin(this._startAngle)\n };\n const endPoint: Point = {\n x: center.x + radius * Math.cos(this._endAngle),\n y: center.y + radius * Math.sin(this._endAngle)\n };\n this._mainSegmentPoints = [startPoint, endPoint];\n\n const startSymbolShape = this._renderSymbol(startSymbol as SymbolAttributes, this._mainSegmentPoints, 'start');\n const endSymbolShape = this._renderSymbol(endSymbol as SymbolAttributes, this._mainSegmentPoints, 'end');\n\n this.startSymbol = startSymbolShape;\n this.endSymbol = endSymbolShape;\n\n const line = graphicCreator.arc({\n x: center.x,\n y: center.y,\n startAngle,\n endAngle,\n innerRadius: radius,\n outerRadius: radius,\n ...lineStyle\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('arc');\n if (!isEmpty(state?.line)) {\n line.states = [].concat(state.line)[0];\n }\n this.add(line);\n this.line = line;\n }\n}\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from './segment';
2
+ export * from './arc-segment';
2
3
  export * from './type';
@@ -17,5 +17,6 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
17
17
 
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
- }), __exportStar(require("./segment"), exports), __exportStar(require("./type"), exports);
20
+ }), __exportStar(require("./segment"), exports), __exportStar(require("./arc-segment"), exports),
21
+ __exportStar(require("./type"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,4CAA0B;AAC1B,yCAAuB","file":"index.js","sourcesContent":["/**\n * @description 线,两端可带箭头等 symbol\n */\nexport * from './segment';\nexport * from './type';\n"]}
1
+ {"version":3,"sources":["../src/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,4CAA0B;AAC1B,gDAA8B;AAC9B,yCAAuB","file":"index.js","sourcesContent":["/**\n * @description 线,两端可带箭头等 symbol\n */\nexport * from './segment';\nexport * from './arc-segment';\nexport * from './type';\n"]}
@@ -1 +1,2 @@
1
- export declare function loadSegmentComponent(): void;
1
+ export declare function loadSegmentComponent(enableAnimation?: boolean): void;
2
+ export declare function loadArcSegmentComponent(enableAnimation?: boolean): void;
@@ -2,14 +2,19 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.loadSegmentComponent = void 0;
5
+ }), exports.loadArcSegmentComponent = exports.loadSegmentComponent = void 0;
6
6
 
7
7
  const vrender_kits_1 = require("@visactor/vrender-kits");
8
8
 
9
- function loadSegmentComponent() {
9
+ function loadSegmentComponent(enableAnimation = !1) {
10
10
  (0, vrender_kits_1.registerGroup)(), (0, vrender_kits_1.registerLine)(), (0, vrender_kits_1.registerPolygon)(),
11
11
  (0, vrender_kits_1.registerSymbol)();
12
12
  }
13
13
 
14
- exports.loadSegmentComponent = loadSegmentComponent;
14
+ function loadArcSegmentComponent(enableAnimation = !1) {
15
+ (0, vrender_kits_1.registerGroup)(), (0, vrender_kits_1.registerLine)(), (0, vrender_kits_1.registerArc)(),
16
+ (0, vrender_kits_1.registerSymbol)();
17
+ }
18
+
19
+ exports.loadSegmentComponent = loadSegmentComponent, exports.loadArcSegmentComponent = loadArcSegmentComponent;
15
20
  //# sourceMappingURL=register.js.map