Нема описа

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { MarkerType } from './../types';
  2. import { LinearMarker } from '../LinearMarker';
  3. import { SvgHelper } from '../../renderer/SvgHelper';
  4. import { WhitePage } from '../../board/WhitePage';
  5. export class ArrowMarker extends LinearMarker {
  6. type: MarkerType = 'arrow';
  7. public static createMarker = (page?: WhitePage): LinearMarker => {
  8. const marker = new ArrowMarker();
  9. marker.page = page;
  10. marker.setup();
  11. return marker;
  12. };
  13. private readonly ARROW_SIZE = 6;
  14. protected setup() {
  15. super.setup();
  16. SvgHelper.setAttributes(this.visual, [['class', 'arrow-marker']]);
  17. const tip = SvgHelper.createPolygon(
  18. `0,0 ${this.ARROW_SIZE},${this.ARROW_SIZE / 2} 0,${this.ARROW_SIZE}`,
  19. [['class', 'arrow-marker-tip']]
  20. );
  21. this.defs.push(
  22. SvgHelper.createMarker(
  23. 'arrow-marker-head',
  24. 'auto',
  25. this.ARROW_SIZE,
  26. this.ARROW_SIZE,
  27. this.ARROW_SIZE - 1,
  28. this.ARROW_SIZE / 2,
  29. tip
  30. )
  31. );
  32. this.markerLine.setAttribute('marker-end', 'url(#arrow-marker-head');
  33. }
  34. }