import * as React from 'react'; import { DefaultLinkModel } from './DefaultLinkModel'; import { DefaultLinkWidget } from './DefaultLinkWidget'; import styled from '@emotion/styled'; import { css, keyframes } from '@emotion/core'; import { AbstractReactFactory } from '@projectstorm/react-canvas-core'; import { DiagramEngine } from '@projectstorm/react-diagrams-core'; namespace S { export const Keyframes = keyframes` from { stroke-dashoffset: 24; } to { stroke-dashoffset: 0; } `; const selected = css` stroke-dasharray: 10, 2; animation: ${Keyframes} 1s linear infinite; `; export const Path = styled.path<{ selected: boolean }>` ${(p) => p.selected && selected}; fill: none; pointer-events: all; `; } export class DefaultLinkFactory extends AbstractReactFactory< Link, DiagramEngine > { constructor(type = 'default') { super(type); } generateReactWidget(event): JSX.Element { return ; } generateModel(event): Link { return new DefaultLinkModel() as Link; } generateLinkSegment(model: Link, selected: boolean, path: string) { return ( ); } }