{"version":3,"file":"netgrif-petriflow.svg.mjs","sources":["../../../projects/petriflow-svg/src/lib/common.ts","../../../projects/petriflow-svg/src/lib/svg-elements/petriflow-arc.ts","../../../projects/petriflow-svg/src/lib/svg-elements/arcs/petriflow-inhibitor-arc.ts","../../../projects/petriflow-svg/src/lib/svg-elements/arcs/petriflow-place-transition-arc.ts","../../../projects/petriflow-svg/src/lib/svg-elements/arcs/petriflow-read-arc.ts","../../../projects/petriflow-svg/src/lib/svg-elements/arcs/petriflow-reset-arc.ts","../../../projects/petriflow-svg/src/lib/svg-elements/arcs/petriflow-transition-place-arc.ts","../../../projects/petriflow-svg/src/lib/svg-elements/petriflow-node.ts","../../../projects/petriflow-svg/src/lib/petriflow-canvas-configuration.ts","../../../projects/petriflow-svg/src/lib/svg-elements/petriflow-place.ts","../../../projects/petriflow-svg/src/lib/svg-elements/petriflow-transition.ts","../../../projects/petriflow-svg/src/lib/svg-elements/public-api.ts","../../../projects/petriflow-svg/src/lib/petriflow-canvas.ts","../../../projects/petriflow-svg/src/lib/grid-configuration.ts","../../../projects/petriflow-svg/src/lib/petriflow-canvas.service.ts","../../../projects/petriflow-svg/src/lib/petriflow-canvas.component.ts","../../../projects/petriflow-svg/src/lib/petriflow-canvas.component.html","../../../projects/petriflow-svg/src/lib/petriflow-canvas.module.ts","../../../projects/petriflow-svg/src/public-api.ts","../../../projects/petriflow-svg/src/netgrif-petriflow.svg.ts"],"sourcesContent":["import {Arc, NodeElement, Place, Transition} from '@netgrif/petri.svg';\nimport {PetriflowNode} from \"./svg-elements/petriflow-node\";\nimport {PetriflowArc} from \"./svg-elements/petriflow-arc\";\n\nexport type PetriflowNodeClickEventFunction = (element: PetriflowNode<NodeElement> | PetriflowArc<Arc>, e ?: Event) => void;\n\nexport function defaultPlace(): Place {\n    return new Place('0', '0', 0, new DOMPoint());\n}\n\nexport function defaultTransition(): Transition {\n    return new Transition('0', '0', new DOMPoint())\n}\n\nconst EMPTY_FUNCTION = () => {\n};\nexport {EMPTY_FUNCTION};\n","import {PetriflowCanvasElement} from './petriflow-canvas-element';\nimport {Arc, NodeElement} from '@netgrif/petri.svg';\nimport {EMPTY_FUNCTION, PetriflowNodeClickEventFunction} from \"../common\";\n\nexport abstract class PetriflowArc<T extends Arc> implements PetriflowCanvasElement {\n\n    protected _element: T;\n    protected _onClickEvent: PetriflowNodeClickEventFunction\n\n    protected constructor(element: T) {\n        this._element = element;\n        this._onClickEvent = EMPTY_FUNCTION;\n        this.element.arcLine.id = `svg_arc_${element.id}`;\n        this.element.container.id = `svg_arc_container_${element.id}`;\n        this.element.arcLineBackground.id = `svg_arc_background_${element.id}`;\n        this.element.multiplicityElement.id = `svg_arc_multiplicity_${element.id}`;\n    }\n\n    cloneArc(id: string, start: NodeElement, end: NodeElement): PetriflowArc<Arc> {\n        const newLinePoints: Array<DOMPoint> = [];\n        this.element.linePoints.forEach(point => newLinePoints.push(Object.assign({}, {\n            x: point.x,\n            y: point.y\n        } as DOMPoint)));\n        const cloned = this.createClonedInstanceOfArc(id, start, end, newLinePoints, this._element.multiplicity?.textContent ?? '');\n        cloned.element.arcLine.onclick = () => this._onClickEvent(cloned);\n        cloned.setOnClick((clone) => this._onClickEvent(clone));\n        return cloned;\n    }\n\n    // TODO: PF-48 remove and use static of?\n    abstract createClonedInstanceOfArc(id: string, start: NodeElement, end: NodeElement, points: Array<DOMPoint>, multiplicity: string): PetriflowArc<Arc>;\n\n    activate(): void {\n        this._element.activate();\n    }\n\n    deactivate(): void {\n        this._element.deactivate();\n    }\n\n    isEnclosedByRectangle(rectangle: SVGRect): boolean {\n        return this._element.isEnclosedByRectangle(rectangle); // TODO: PF-48\n    }\n\n    isSelected(): boolean {\n        return this._element.isSelected();\n    }\n\n    moveBy(x: number, y: number): void {\n        this._element.moveBy(x, y);\n    }\n\n    deselect(): void {\n        this.setSelected(false);\n        this.deactivate();\n    }\n\n    select(): void {\n        this.setSelected(true);\n        this.activate();\n    }\n\n    setSelected(value: boolean): void {\n        this._element.setSelected(value);\n    }\n\n    setMultiplicity(multiplicity: string): void {\n        this._element.multiplicity.textContent = multiplicity;\n    }\n\n    get element(): T {\n        return this._element;\n    }\n\n    set element(value: T) {\n        this._element = value;\n    }\n\n    getBreakPointList(): Array<DOMPoint> {\n        return this.element.linePoints;\n    }\n\n    setSource(source: NodeElement): void {\n        this.element.start = source;\n    }\n\n    setOnClick(eventFunction: PetriflowNodeClickEventFunction): void {\n        this._onClickEvent = eventFunction;\n        this.element.arcLine.onclick = (e) => {\n            eventFunction(this, e);\n        };\n    }\n}\n","import {InhibitorArc, NodeElement} from '@netgrif/petri.svg';\nimport {PetriflowArc} from '../petriflow-arc';\n\nexport class PetriflowInhibitorArc extends PetriflowArc<InhibitorArc> {\n\n    constructor(arc: InhibitorArc) {\n        super(arc);\n    }\n\n    public static of(id: string, start: NodeElement, end: NodeElement, linePoints?: Array<DOMPoint>, multiplicityLabel?: string | null): PetriflowInhibitorArc {\n        return new PetriflowInhibitorArc(new InhibitorArc(id, start, end, linePoints, multiplicityLabel));\n    }\n\n    createClonedInstanceOfArc(id: string, start: NodeElement, end: NodeElement, points: Array<DOMPoint>, multiplicity: string) {\n        return new PetriflowInhibitorArc(new InhibitorArc(id, start, end, points, multiplicity));\n    }\n}\n","import {NodeElement, RegularPlaceTransitionArc} from '@netgrif/petri.svg';\nimport {PetriflowArc} from '../petriflow-arc';\n\nexport class PetriflowPlaceTransitionArc extends PetriflowArc<RegularPlaceTransitionArc> {\n\n    constructor(arc: RegularPlaceTransitionArc) {\n        super(arc);\n    }\n\n    public static of(id: string, start: NodeElement, end: NodeElement, linePoints?: Array<DOMPoint>, multiplicityLabel?: string | null): PetriflowPlaceTransitionArc {\n        return new PetriflowPlaceTransitionArc(new RegularPlaceTransitionArc(id, start, end, linePoints, multiplicityLabel));\n    }\n\n    createClonedInstanceOfArc(id: string, start: NodeElement, end: NodeElement, points: Array<DOMPoint>, multiplicity: string) {\n        return new PetriflowPlaceTransitionArc(new RegularPlaceTransitionArc(id, start, end, points, multiplicity));\n    }\n}\n","import {NodeElement, ReadArc} from '@netgrif/petri.svg';\nimport {PetriflowArc} from '../petriflow-arc';\n\nexport class PetriflowReadArc extends PetriflowArc<ReadArc> {\n\n    constructor(arc: ReadArc) {\n        super(arc);\n    }\n\n    public static of(id: string, start: NodeElement, end: NodeElement, linePoints?: Array<DOMPoint>, multiplicityLabel?: string | null): PetriflowReadArc {\n        return new PetriflowReadArc(new ReadArc(id, start, end, linePoints, multiplicityLabel));\n    }\n\n    createClonedInstanceOfArc(id: string, start: NodeElement, end: NodeElement, points: Array<DOMPoint>, multiplicity: string) {\n        return new PetriflowReadArc(new ReadArc(id, start, end, points, multiplicity));\n    }\n}\n","import {NodeElement, ResetArc} from '@netgrif/petri.svg';\nimport {PetriflowArc} from '../petriflow-arc';\n\nexport class PetriflowResetArc extends PetriflowArc<ResetArc> {\n\n    constructor(arc: ResetArc) {\n        super(arc);\n    }\n\n    public static of(id: string, start: NodeElement, end: NodeElement, linePoints?: Array<DOMPoint>, multiplicityLabel?: string | null): PetriflowResetArc {\n        return new PetriflowResetArc(new ResetArc(id, start, end, linePoints, multiplicityLabel));\n    }\n\n    createClonedInstanceOfArc(id: string, start: NodeElement, end: NodeElement, points: Array<DOMPoint>, multiplicity: string) {\n        return new PetriflowResetArc(new ResetArc(id, start, end, points, multiplicity));\n    }\n}\n","import {NodeElement, RegularPlaceTransitionArc, RegularTransitionPlaceArc} from '@netgrif/petri.svg';\nimport {PetriflowArc} from '../petriflow-arc';\n\nexport class PetriflowTransitionPlaceArc extends PetriflowArc<RegularTransitionPlaceArc> {\n\n    constructor(arc: RegularPlaceTransitionArc) {\n        super(arc);\n    }\n\n    public static of(id: string, start: NodeElement, end: NodeElement, linePoints?: Array<DOMPoint>, multiplicityLabel?: string | null): PetriflowTransitionPlaceArc {\n        return new PetriflowTransitionPlaceArc(new RegularTransitionPlaceArc(id, start, end, linePoints, multiplicityLabel));\n    }\n\n    createClonedInstanceOfArc(id: string, start: NodeElement, end: NodeElement, points: Array<DOMPoint>, multiplicity: string) {\n        return new PetriflowTransitionPlaceArc(new RegularTransitionPlaceArc(id, start, end, points, multiplicity));\n    }\n}\n","import {PetriflowCanvasElement} from './petriflow-canvas-element';\nimport {NodeElement} from '@netgrif/petri.svg';\nimport {EMPTY_FUNCTION, PetriflowNodeClickEventFunction} from \"../common\";\n\nexport abstract class PetriflowNode<T extends NodeElement> implements PetriflowCanvasElement {\n\n    protected _canvasElement: T;\n    protected _onClickEvent: PetriflowNodeClickEventFunction;\n    protected _onContextEvent: PetriflowNodeClickEventFunction;\n\n    protected constructor(canvasElement: T) {\n        this._canvasElement = canvasElement;\n        // TODO: PF-48 remove events\n        this._onClickEvent = EMPTY_FUNCTION;\n        this._onContextEvent = EMPTY_FUNCTION;\n    }\n\n    setOnClick(event: PetriflowNodeClickEventFunction): void {\n        this.onClickEvent = event;\n        this.canvasElement.element.onclick = (mouseEvent: Event | undefined) => {\n            event(this, mouseEvent);\n        };\n    }\n\n    setOnContext(event: PetriflowNodeClickEventFunction): void {\n        this.onContextEvent = event;\n        this.canvasElement.element.oncontextmenu = (mouseEvent: Event | undefined) => {\n            event(this, mouseEvent);\n        }\n    }\n\n    isSelected(): boolean {\n        return this.canvasElement.isSelected();\n    }\n\n    deselect(): void {\n        this.canvasElement.setSelected(false);\n        this.canvasElement.deactivate();\n    }\n\n    select(): void {\n        this.canvasElement.setSelected(true);\n        this.canvasElement.activate();\n    }\n\n    getPosition(): DOMPoint {\n        return this.canvasElement.position;\n    }\n\n    activate(): void {\n        this.canvasElement.activate();\n    }\n\n    deactivate(): void {\n        this.canvasElement.deactivate();\n    }\n\n    isEnclosedByRectangle(rectangle: SVGRect): boolean {\n        return this.canvasElement.isEnclosedByRectangle(rectangle);\n    }\n\n    moveBy(x: number, y: number): void {\n        this.canvasElement.moveBy(x, y);\n    }\n\n    setSelected(value: boolean): void {\n        this.canvasElement.setSelected(value);\n    }\n\n    get canvasElement(): T {\n        return this._canvasElement;\n    }\n\n    set canvasElement(value: T) {\n        this._canvasElement = value;\n    }\n\n    get onClickEvent() {\n        return this._onClickEvent;\n    }\n\n    set onClickEvent(value) {\n        this._onClickEvent = value;\n    }\n\n    get onContextEvent() {\n        return this._onContextEvent;\n    }\n\n    set onContextEvent(value) {\n        this._onContextEvent = value;\n    }\n\n    abstract clone(): PetriflowNode<NodeElement>;\n\n    abstract changeId(id: string): void;\n\n    abstract move(position: DOMPoint): void;\n}\n","export class PetriflowCanvasConfiguration {\n    public static PANZOOM_MOVE = 10;\n    public static PANZOOM_ZOOM_IN_MULTIPLIER = 1.25;\n    public static PANZOOM_ZOOM_OUT_MULTIPLIER = 0.8;\n\n    public static TRANSITION_ID_COUNTER = 0;\n    public static PLACE_ID_COUNTER = 0;\n    public static ARC_ID_COUNTER = 0;\n}\n","import {Place} from '@netgrif/petri.svg';\nimport {PetriflowNode} from './petriflow-node';\nimport {PetriflowCanvasConfiguration} from '../petriflow-canvas-configuration';\nimport {defaultPlace, EMPTY_FUNCTION, PetriflowNodeClickEventFunction} from '../common';\n\nexport class PetriflowPlace extends PetriflowNode<Place> {\n\n    private _onTokenClickEvent: PetriflowNodeClickEventFunction;\n\n    constructor(place: Place) {\n        super(place);\n        this._onTokenClickEvent = EMPTY_FUNCTION;\n        this.changeId(place.id);\n    }\n\n    public static of(id: string, label: string, marking: number, position: DOMPoint): PetriflowPlace {\n        return new PetriflowPlace(new Place(id, label, marking, position));\n    }\n\n    clone(): PetriflowPlace {\n        const cloned = new PetriflowPlace(this.canvasElement.clone() ?? defaultPlace());\n        cloned.canvasElement.markingTokens.forEach(token => {\n            token.onclick = () => this._onTokenClickEvent(cloned);\n        });\n        cloned.setOnClick((clone) => this.onClickEvent(clone));\n        cloned.setOnContext((clone) => this.onContextEvent(clone));\n        cloned.setOnTokenClickEvent((clone) => this._onTokenClickEvent(clone));\n        cloned.changeId(`p${++PetriflowCanvasConfiguration.PLACE_ID_COUNTER}`);\n        return cloned;\n    }\n\n    setOnTokenClickEvent(event: PetriflowNodeClickEventFunction): void {\n        this._onTokenClickEvent = event;\n        this.canvasElement.markingTokens.forEach(token => {\n            token.onclick = () => {\n                event(this);\n            };\n        });\n        this.canvasElement.markingElement.onclick = () => {\n            event(this);\n        };\n    }\n\n    changeId(id: string): void {\n        this.canvasElement.id = `svg_place_${id}`;\n        this.canvasElement.container.id = `svg_place_container_${id}`;\n        this.canvasElement.labelElement.id = `svg_place_label_${id}`;\n        this.canvasElement.markingElement.id = `svg_place_marking_number_${id}`;\n        this.canvasElement.markingTokens.forEach((token, index) => token.id = `svg_place_marking_token_${index}_${id}`);\n    }\n\n    move(position: DOMPoint) {\n        this.canvasElement.move(position);\n    }\n}\n","import {PetriflowNode} from './petriflow-node';\nimport {CanvasConfiguration, Transition} from '@netgrif/petri.svg';\nimport {PetriflowCanvasConfiguration} from '../petriflow-canvas-configuration';\nimport {PetriflowNodeClickEventFunction} from '../common';\n\nexport class PetriflowTransition extends PetriflowNode<Transition> {\n\n    private _finishArrow: SVGPolygonElement;\n    private _cancelArrow: SVGPolygonElement;\n    private _iconElement: SVGTextElement | undefined;\n    private _icon: Text | undefined;\n\n    constructor(transition: Transition, icon?: string) {\n        super(transition);\n\n        this._cancelArrow = document.createElementNS(CanvasConfiguration.SVG_NAMESPACE, 'polygon') as SVGPolygonElement;\n        this._cancelArrow.setAttributeNS(null, 'fill', 'white');\n        this._cancelArrow.setAttributeNS(null, 'stroke', 'white');\n        this._cancelArrow.setAttributeNS(null, 'stroke-width', '2');\n        this._cancelArrow.setAttributeNS(null, 'points', this.canvasElement.cancelArrowPoints(transition.position));\n        this.canvasElement.container.appendChild(this._cancelArrow);\n\n        this._finishArrow = document.createElementNS(CanvasConfiguration.SVG_NAMESPACE, 'polygon') as SVGPolygonElement;\n        this._finishArrow.setAttributeNS(null, 'fill', 'white');\n        this._finishArrow.setAttributeNS(null, 'stroke', 'white');\n        this._finishArrow.setAttributeNS(null, 'stroke-width', '2');\n        this._finishArrow.setAttributeNS(null, 'points', this.canvasElement.finishArrowPoints(transition.position));\n        this.canvasElement.container.appendChild(this._finishArrow);\n\n        this.setIcon(icon);\n        this.changeId(transition.id);\n        this.deactivate();\n    }\n\n    public static of(id: string, label: string, position: DOMPoint, icon?: string): PetriflowTransition {\n        return new PetriflowTransition(new Transition(id, label, position), icon);\n    }\n\n    setIcon(icon: string | undefined): void {\n        this.removeIcon();\n        if (!!icon) {\n            this.addIcon(icon);\n        }\n    }\n\n    addIcon(icon: string): void {\n        this._iconElement = (document.createElementNS(CanvasConfiguration.SVG_NAMESPACE, 'text') as unknown) as SVGTextElement;\n        this._iconElement.setAttributeNS(null, 'x', String(this.canvasElement.position.x - CanvasConfiguration.ICON_SIZE / 2));\n        this._iconElement.setAttributeNS(null, 'y', String(this.canvasElement.position.y + CanvasConfiguration.ICON_SIZE / 2));\n        this._iconElement.setAttributeNS(null, 'style', `font-family: Material Icons;font-size:${CanvasConfiguration.ICON_SIZE}`);\n        this._icon = document.createTextNode(icon);\n        this._iconElement.appendChild(this._icon);\n\n        this._iconElement.onmouseenter = () => {\n            this.activate();\n        };\n        this._iconElement.onmouseleave = () => {\n            if (!this.isSelected()) {\n                this.deactivate();\n            }\n        };\n        this._iconElement.onclick = this.canvasElement.element.onclick;\n        this._iconElement.oncontextmenu = this.canvasElement.element.oncontextmenu;\n\n        this.canvasElement.container.appendChild(this._iconElement);\n    }\n\n    removeIcon(): void {\n        if (!!this._iconElement) {\n            this.canvasElement.container.removeChild(this._iconElement);\n            this._icon = undefined;\n            this._iconElement = undefined;\n        }\n    }\n\n    setOnClick(event: PetriflowNodeClickEventFunction): void {\n        this.onClickEvent = event;\n        this.canvasElement.element.onclick = (mouseEvent: Event | undefined) => {\n            event(this, mouseEvent);\n        };\n        if (!!this._iconElement) {\n            this._iconElement.onclick = (mouseEvent: Event | undefined) => {\n                event(this, mouseEvent);\n            };\n        }\n    }\n\n    setOnContext(event: PetriflowNodeClickEventFunction): void {\n        this.onContextEvent = event;\n        this.canvasElement.element.oncontextmenu = (mouseEvent: Event | undefined) => {\n            event(this, mouseEvent);\n        };\n        if (!!this._iconElement) {\n            this._iconElement.oncontextmenu = (mouseEvent: Event | undefined) => {\n                event(this, mouseEvent);\n            };\n        }\n    }\n\n    moveBy(x: number, y: number): void {\n        super.moveBy(x, y);\n        this._iconElement?.setAttributeNS(null, 'x', String(this.canvasElement.position.x - CanvasConfiguration.ICON_SIZE / 2));\n        this._iconElement?.setAttributeNS(null, 'y', String(this.canvasElement.position.y + CanvasConfiguration.ICON_SIZE / 2));\n        this._cancelArrow.setAttributeNS(null, 'points', this.canvasElement.cancelArrowPoints(this.canvasElement.position));\n        this._finishArrow.setAttributeNS(null, 'points', this.canvasElement.finishArrowPoints(this.canvasElement.position));\n    }\n\n    move(position: DOMPoint): void {\n        this.canvasElement.move(position);\n        this._cancelArrow.setAttributeNS(null, 'points', this.canvasElement.cancelArrowPoints(position));\n        this._finishArrow.setAttributeNS(null, 'points', this.canvasElement.finishArrowPoints(position));\n        if (this._iconElement) {\n            this.setIconElementPosition(position);\n        }\n    }\n\n    activate(): void {\n        this.canvasElement.activate();\n        // this._cancelArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-cancel-active');\n        // this._finishArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-finish-active');\n        this._iconElement?.setAttributeNS(null, 'class', 'svg-active-fill');\n    }\n\n    deactivate(): void {\n        this.canvasElement.deactivate();\n        this._cancelArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-cancel-inactive');\n        this._finishArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-finish-inactive');\n        this._iconElement?.setAttributeNS(null, 'class', 'svg-inactive-fill');\n    }\n\n    private setIconElementPosition(position: DOMPoint): void {\n        if (this._iconElement) {\n            this._iconElement.setAttributeNS(null, 'x', `${position.x - CanvasConfiguration.ICON_SIZE / 2}`);\n            this._iconElement.setAttributeNS(null, 'y', `${position.y + CanvasConfiguration.ICON_SIZE / 2}`);\n        }\n    }\n\n    public enable(firing: boolean): void {\n        this.canvasElement.enable(firing);\n        this.setIconFiringClass(firing);\n    }\n\n    public disable(firing: boolean): void {\n        this.canvasElement.disable();\n        this.setIconFiringClass(firing);\n    }\n\n    private setIconFiringClass(firing: boolean): void {\n        if (firing) {\n            this._cancelArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-cancel-active');\n            this._finishArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-finish-active');\n            this._iconElement?.setAttributeNS(null, 'class', 'svg-icon-inactive');\n        } else {\n            // TODO: PF-48 - global active/inactive static strings\n            this._cancelArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-cancel-inactive');\n            this._finishArrow.setAttributeNS(null, 'class', 'svg-fire-arrow-finish-inactive');\n            this._iconElement?.setAttributeNS(null, 'class', 'svg-icon-active');\n        }\n    }\n\n    deselect(): void {\n        this.setSelected(false);\n        this.deactivate();\n        this._iconElement?.setAttributeNS(null, 'class', 'svg-inactive-fill');\n    }\n\n    select(): void {\n        this.setSelected(true);\n        this.activate();\n        this._iconElement?.setAttributeNS(null, 'class', 'svg-active-fill');\n    }\n\n    get finishArrow(): SVGPolygonElement {\n        return this._finishArrow;\n    }\n\n    set finishArrow(value: SVGPolygonElement) {\n        this._finishArrow = value;\n    }\n\n    get cancelArrow(): SVGPolygonElement {\n        return this._cancelArrow;\n    }\n\n    set cancelArrow(value: SVGPolygonElement) {\n        this._cancelArrow = value;\n    }\n\n    get iconElement(): SVGTextElement | undefined {\n        return this._iconElement;\n    }\n\n    set iconElement(value: SVGTextElement | undefined) {\n        this._iconElement = value;\n    }\n\n    get icon(): Text | undefined {\n        return this._icon;\n    }\n\n    set icon(value: Text | undefined) {\n        this._icon = value;\n    }\n\n    clone(): PetriflowTransition {\n        const cloned = new PetriflowTransition(this.canvasElement.clone() as Transition, this.icon?.wholeText);\n        cloned.setOnClick((clone) => this.onClickEvent(clone));\n        cloned.setOnContext((clone) => this.onContextEvent(clone));\n        cloned.changeId(`t${++PetriflowCanvasConfiguration.TRANSITION_ID_COUNTER}`);\n        return cloned;\n    }\n\n    changeId(id: string): void {\n        this.canvasElement.id = `svg_transition_${id}`;\n        this.canvasElement.container.id = `svg_transition_container_${id}`;\n        this.canvasElement.labelElement.id = `svg_transition_label_${id}`;\n        this.canvasElement.labelBackground.id = `svg_transition_label_background_${id}`;\n        this.finishArrow.id = `svg_transition_finish_${id}`;\n        this.cancelArrow.id = `svg_transition_start_${id}`;\n    }\n}\n","/* ARCS */\nexport * from './arcs/public-api';\n\n/* OBJECTS */\nexport * from './petriflow-arc';\nexport * from './petriflow-node';\nexport * from './petriflow-place';\nexport * from './petriflow-transition';\nexport * from './petriflow-canvas-element';\n","import {ArrowArcEnd, Canvas, DoubleArrowArcEnd, EmptyCircleArcEnd, FullCircleArcEnd} from '@netgrif/petri.svg';\n\nexport class PetriflowCanvas extends Canvas {\n\n    constructor(svg: SVGSVGElement, defs?: SVGDefsElement) {\n        super(svg, defs);\n        this.register(new ArrowArcEnd());\n        this.register(new EmptyCircleArcEnd());\n        this.register(new FullCircleArcEnd());\n        this.register(new DoubleArrowArcEnd());\n    }\n}\n","import {CanvasConfiguration} from '@netgrif/petri.svg';\n\nexport class GridConfiguration {\n    public size: number = CanvasConfiguration.SIZE;\n    public stroke: string = '#ccc';\n    public enabled: boolean = true;\n    public width: number = CanvasConfiguration.WIDTH;\n    public height: number = CanvasConfiguration.HEIGHT;\n}\n","import {Injectable} from '@angular/core';\nimport {PetriflowCanvas} from './petriflow-canvas';\nimport {PanzoomObject} from '@panzoom/panzoom';\nimport {Arc, CanvasConfiguration, NodeElement, Place, StaticPlace, Transition} from '@netgrif/petri.svg';\nimport {PetriflowNode} from './svg-elements/petriflow-node';\nimport {PetriflowArc} from './svg-elements/petriflow-arc';\nimport {GridConfiguration} from './grid-configuration';\nimport {PetriflowPlace} from './svg-elements/petriflow-place';\nimport {PetriflowTransition} from './svg-elements/petriflow-transition';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport abstract class PetriflowCanvasService {\n\n    // TODO: PF-48 - why removed collection?\n    // TODO: PF-48 add canvas and panzoom as constructor args and safeguard that\n    //  they are not undefined and remove checks on start of each function\n    protected _canvas: PetriflowCanvas | undefined;\n    protected _panzoom: PanzoomObject | undefined;\n    protected _arcLine: SVGElement | undefined;\n    protected _source: PetriflowNode<NodeElement> | undefined;\n    protected _clipboardBox: DOMRect | undefined;\n    protected _clipboard: SVGElement | undefined;\n    protected rectangle: SVGElement | undefined;\n    protected _breakpoint: DOMPoint;\n    protected _selectedArc: PetriflowArc<Arc> | undefined;\n    protected _gridConfiguration = new GridConfiguration();\n    protected mouseDown = false;\n    protected mouseX = 0;\n    protected mouseY = 0;\n\n    protected constructor() {\n        this._breakpoint = new DOMPoint();\n    }\n\n    public get panzoom(): PanzoomObject | undefined {\n        return this._panzoom;\n    }\n\n    public set panzoom(value: PanzoomObject | undefined) {\n        this._panzoom = value;\n    }\n\n    public get xOffset(): number | undefined {\n        return this?._panzoom?.getPan()?.x;\n    }\n\n    public get yOffset(): number | undefined {\n        return this?._panzoom?.getPan()?.y;\n    }\n\n    public get scale(): number | undefined {\n        return this?._panzoom?.getScale();\n    }\n\n    public get canvas(): PetriflowCanvas | undefined {\n        return this._canvas;\n    }\n\n    public set canvas(value: PetriflowCanvas | undefined) {\n        this._canvas = value;\n    }\n\n    public disablePanning() {\n        if (!!this.panzoom) {\n            this.panzoom.setOptions({disablePan: true});\n        }\n    }\n\n    public enablePanning() {\n        if (!!this.panzoom) {\n            this.panzoom.setOptions({disablePan: false});\n        }\n    }\n\n    public createPlace(place: Place | StaticPlace): void {\n        if (!this.canvas) {\n            throw new Error('SVG canvas for petriflow objects doesn\\'t exists!');\n        }\n        this.canvas.addPlace(place);\n    }\n\n    // TODO: PF-48 'add' not 'create'\n    public createTransition(transition: Transition): void {\n        if (!this.canvas) {\n            throw new Error('SVG canvas for petriflow objects doesn\\'t exists!');\n        }\n        this.canvas.addTransition(transition);\n    }\n\n    public createRectangle(mouseX: number, mouseY: number): SVGElement {\n        if (!this.canvas) {\n            throw new Error('SVG canvas for petriflow objects doesn\\'t exists!');\n        }\n        const rectangle = document.createElementNS(CanvasConfiguration.SVG_NAMESPACE, 'rect') as SVGElement;\n        rectangle.setAttributeNS(null, 'fill', 'none');\n        rectangle.setAttributeNS(null, 'class', 'path');\n        rectangle.setAttributeNS(null, 'stroke', 'black');\n        rectangle.setAttributeNS(null, 'stroke-width', '1');\n        rectangle.setAttributeNS(null, 'animation', 'dash 5s linear');\n        rectangle.setAttributeNS(null, 'x', `${mouseX}`);\n        rectangle.setAttributeNS(null, 'y', `${mouseY}`);\n        this.canvas.container.appendChild(rectangle);\n        return rectangle;\n    }\n\n    public createSvgArc(element: PetriflowNode<NodeElement>, arrowUrl: string): SVGPolygonElement {\n        if (!this.canvas) {\n            throw new Error('SVG canvas for petriflow objects doesn\\'t exists!');\n        }\n        const arcLine = document.createElementNS(CanvasConfiguration.SVG_NAMESPACE, 'polyline') as SVGPolylineElement;\n        arcLine.setAttributeNS(null, 'fill', 'none');\n        arcLine.setAttributeNS(null, 'stroke', 'black');\n        arcLine.setAttributeNS(null, 'stroke-width', '2');\n        arcLine.setAttributeNS(null, 'marker-end', `url(#${arrowUrl})`);\n        arcLine.setAttributeNS(null, 'points', `${element.getPosition().x},${element.getPosition().y} ${element.getPosition().x},${element.getPosition().y}`);\n        this.canvas.container.appendChild(arcLine);\n        return arcLine;\n    }\n\n    // moved from petriflow-canvas-configuration-service\n    public get arcLine(): SVGElement | undefined {\n        return this._arcLine;\n    }\n\n    public set arcLine(value: SVGElement | undefined) {\n        this._arcLine = value;\n    }\n\n    public get source(): PetriflowNode<NodeElement> | undefined {\n        return this._source;\n    }\n\n    public set source(value: PetriflowNode<NodeElement> | undefined) {\n        this._source = value;\n    }\n\n    public get clipboard(): SVGElement | undefined {\n        return this._clipboard;\n    }\n\n    public set clipboard(value: SVGElement | undefined) {\n        this._clipboard = value;\n    }\n\n    public get clipboardBox(): DOMRect | undefined {\n        return this._clipboardBox;\n    }\n\n    public set clipboardBox(value: DOMRect | undefined) {\n        this._clipboardBox = value;\n    }\n\n    public get gridConfiguration(): GridConfiguration {\n        return this._gridConfiguration;\n    }\n\n    public gridOnOff() {\n        this._gridConfiguration.enabled = !this._gridConfiguration.enabled;\n    }\n\n    protected copyFromClipboardToCollection(matrix: SVGMatrix, collectionFrom: Array<PetriflowNode<NodeElement>>, collectionTo: Array<PetriflowNode<NodeElement>>) {\n        collectionFrom.forEach(copyElement => {\n            copyElement.moveBy(matrix.e, matrix.f);\n            if (!this.canvas) {\n                throw new Error('SVG canvas for petriflow objects doesn\\'t exists!');\n            }\n            if (copyElement instanceof PetriflowPlace) {\n                this.canvas.addPlace(copyElement.canvasElement);\n            } else if (copyElement instanceof PetriflowTransition) {\n                this.canvas.addTransition(copyElement.canvasElement);\n            }\n            collectionTo.push(copyElement);\n        });\n    }\n\n    protected initialiseClipboard() {\n        this.clipboard = document.createElementNS(CanvasConfiguration.SVG_NAMESPACE, 'g') as SVGGElement;\n        this.clipboard.id = 'petri-svg-clipboard';\n    }\n\n    protected pasteElementsFromCollection(collection: Array<PetriflowNode<NodeElement>>) {\n        const length = collection.length;\n        collection.forEach(element => {\n            const newElement = element.clone();\n            this.clipboard?.appendChild(newElement.canvasElement.container);\n            collection.push(newElement);\n        });\n        collection.splice(0, length);\n    }\n\n    protected createBreakpoint(e: MouseEvent, arc: PetriflowArc<Arc>) {\n        if (!this._selectedArc) {\n            for (const linePoint of arc.element.linePoints) {\n                if (Math.abs(linePoint.x - e.offsetX) < 10 && Math.abs(linePoint.y - e.offsetY) < 10) {\n                    this._breakpoint = linePoint;\n                    this._selectedArc = arc;\n                    return;\n                }\n            }\n            const mouseX = e.offsetX;\n            const mouseY = e.offsetY;\n            const newBreakpoint = new DOMPoint(mouseX, mouseY);\n            arc.element.linePoints.splice(this.getBreakpointIndex(newBreakpoint, arc.element), 0, newBreakpoint);\n            arc.element.move(arc.element.start, arc.element.end);\n            this._breakpoint = newBreakpoint;\n            this._selectedArc = arc;\n        } else if (this._selectedArc) {\n            this._breakpoint = new DOMPoint();\n            this._selectedArc = undefined;\n        }\n    }\n\n    protected getBreakpointIndex(newBreakpoint: DOMPoint, arc: Arc): number {\n        const arcPoints = [...arc.linePoints, arc.end.position];\n        const arcPointsLength = arcPoints.length;\n        if (arcPointsLength) {\n            for (let i = 0; i < arcPointsLength - 1; i++) {\n                const breakpointOffset = this.getDistanceBetweenPoints(arcPoints[i], arcPoints[i + 1])\n                    - (this.getDistanceBetweenPoints(arcPoints[i], newBreakpoint)\n                        + this.getDistanceBetweenPoints(newBreakpoint, arcPoints[i + 1]));\n                if (Math.abs(breakpointOffset) <= 2) {\n                    return i + 1;\n                }\n            }\n        }\n        return 0;\n    }\n\n    protected getDistanceBetweenPoints(pointStart: DOMPoint, pointEnd: DOMPoint): number {\n        return Math.sqrt(Math.pow(pointEnd.x - pointStart.x, 2) + Math.pow(pointEnd.y - pointStart.y, 2));\n    }\n\n    protected moveBreakpoint(e: MouseEvent) {\n        if (this._breakpoint) {\n            const mouseX = e.offsetX;\n            const mouseY = e.offsetY;\n            this._breakpoint.x = mouseX;\n            this._breakpoint.y = mouseY;\n            this._selectedArc?.element.move(this._selectedArc.element.start, this._selectedArc.element.end);\n        }\n    }\n\n    protected moveArc(e: MouseEvent) {\n        if (!this._source) {\n            return;\n        }\n        const intersect = this._source.canvasElement.getEdgeIntersection(new DOMPoint(e.offsetX, e.offsetY), 0);\n        const xLineLength = e.offsetX - intersect.x;\n        const yLineLength = e.offsetY - intersect.y;\n        const arcLength = Math.sqrt(xLineLength * xLineLength + yLineLength * yLineLength);\n        const arcLengthOffset = arcLength - CanvasConfiguration.ARROW_HEAD_SIZE;\n        const arcRatio = arcLengthOffset / arcLength;\n        const finalX = intersect.x + xLineLength * arcRatio;\n        const finalY = intersect.y + yLineLength * arcRatio;\n        if (!this._arcLine) {\n            throw new Error('Arc line is not set!');\n        }\n        this._arcLine.setAttributeNS(null, 'points', `${intersect.x},${intersect.y} ${finalX},${finalY}`);\n    }\n\n    protected moveElement(e: MouseEvent) {\n        if (this._source && !this.clipboard) {\n            this._source.move(new DOMPoint(e.offsetX, e.offsetY));\n        }\n    }\n\n    protected onCanvasMouseMoveClipboard(event: MouseEvent) {\n        if (this._clipboard && this._clipboardBox) {\n            const x = this.xOffset;\n            const y = this.yOffset;\n            const scale = this.scale;\n            const mouseX = (event.x - (x ?? 0)) / (scale ?? 1) - (this._clipboardBox.x + this._clipboardBox.width / 2 - (x ?? 0)) / (scale ?? 1);\n            const mouseY = (event.y - (y ?? 0)) / (scale ?? 1) - (this._clipboardBox.y + this._clipboardBox.height / 2 - (y ?? 0)) / (scale ?? 1);\n            this._clipboard.setAttribute('transform', `matrix(1,0,0,1,${mouseX},${mouseY})`);\n        }\n    }\n\n    public disablePreviousArcMode() {\n        if (this.arcLine) {\n            this.canvas?.container.removeChild(this.arcLine);\n            this.source = undefined;\n            this.arcLine = undefined;\n        }\n    }\n}\n","import {AfterViewInit, Component, ElementRef, Input, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {PetriflowCanvasService} from './petriflow-canvas.service';\nimport {PetriflowCanvas} from './petriflow-canvas';\nimport {GridConfiguration} from './grid-configuration';\nimport Panzoom, {PanzoomOptions} from '@panzoom/panzoom';\n\n@Component({\n    selector: 'petriflow-svg-canvas',\n    templateUrl: './petriflow-canvas.component.html',\n    styles: [],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PetriflowCanvasComponent implements AfterViewInit {\n\n    @ViewChild('canvas') canvasElement: ElementRef | undefined;\n    @ViewChild('canvasDefs') canvasDefsElement: ElementRef | undefined;\n    @ViewChild('canvasGrid') canvasGridElement: ElementRef | undefined;\n    @Input() gridConfiguration: GridConfiguration = new GridConfiguration();\n    @Input() panzoomConfiguration: PanzoomOptions = {\n        canvas: true,\n        contain: 'outside',\n        cursor: 'auto',\n        maxScale: 10,\n        minScale: 0.5,\n        step: 0.2\n    };\n    private _canvas: PetriflowCanvas | undefined;\n\n    constructor(private _canvasService: PetriflowCanvasService) {\n    }\n\n    ngAfterViewInit() {\n        this._canvas = new PetriflowCanvas(this.canvasElement?.nativeElement, this.canvasDefsElement?.nativeElement);\n        this._canvasService.canvas = this._canvas;\n        this._canvasService.panzoom = Panzoom(this.canvasElement?.nativeElement, this.panzoomConfiguration);\n        this.canvasElement?.nativeElement.parentElement.addEventListener('wheel', this._canvasService.panzoom.zoomWithWheel);\n    }\n\n    get canvas(): PetriflowCanvas | undefined {\n        return this._canvas;\n    }\n\n    // TODO: PF-48 where hotkeys?\n}\n","<svg #canvas [attr.width]=\"gridConfiguration.width\" [attr.height]=\"gridConfiguration.height\">\n    <defs #canvasDefs>\n        <pattern id=\"canvas-grid\" [attr.width]=\"gridConfiguration.size\" [attr.height]=\"gridConfiguration.size\"\n                 patternUnits=\"userSpaceOnUse\">\n            <rect [attr.width]=\"gridConfiguration.size\" [attr.height]=\"gridConfiguration.size\"\n                  fill=\"white\"/>\n            <path id=\"canvas-grid-path\" [attr.d]=\"'M '+gridConfiguration.size+' 0 L 0 0 0 '+gridConfiguration.size\"\n                  fill=\"none\" [attr.stroke]=\"gridConfiguration.stroke\"\n                  stroke-width=\"1\"/>\n        </pattern>\n    </defs>\n    <rect *ngIf=\"gridConfiguration.enabled\" width=\"100%\" height=\"100%\" fill=\"url(#canvas-grid)\" #canvasGrid/>\n</svg>\n","import {NgModule} from '@angular/core';\nimport {PetriflowCanvasComponent} from './petriflow-canvas.component';\nimport {CommonModule} from '@angular/common';\n\n@NgModule({\n    declarations: [PetriflowCanvasComponent],\n    imports: [\n        CommonModule\n    ],\n    exports: [PetriflowCanvasComponent]\n})\nexport class PetriflowCanvasModule {\n}\n","/*\n * Public API Surface of petriflow-petri-svg\n */\n\nexport * from './lib/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PetriflowCanvasService"],"mappings":"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"}