Created
December 11, 2017 22:09
-
-
Save dborisenko/36c0cdf6e385865854665e20788d4c54 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import scala.scalajs.js | |
| import js.annotation._ | |
| import js.| | |
| package importedjs { | |
| @js.native | |
| @JSGlobal | |
| class BaseListener extends js.Object { | |
| def lockChanged(entity: BaseEntity[BaseListener], locked: Boolean): Unit = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class BaseEntity[T <: BaseListener] protected () extends js.Object { | |
| def this(id: String) = js.native | |
| var listeners: BaseEntity.Listeners = js.native | |
| var id: String = js.native | |
| var locked: Boolean = js.native | |
| def getID(): js.Dynamic = js.native | |
| def clearListeners(): js.Dynamic = js.native | |
| def deSerialize(data: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def iterateListeners(cb: js.Function1[T, Any]): js.Dynamic = js.native | |
| def removeListener(listener: String): js.Dynamic = js.native | |
| def addListener(listener: T): String = js.native | |
| def isLocked(): Boolean = js.native | |
| def setLocked(locked: Boolean): js.Dynamic = js.native | |
| } | |
| object BaseEntity { | |
| @js.native | |
| trait Listeners extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): T = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: T): Unit = js.native | |
| } | |
| } | |
| @js.native | |
| @JSGlobal | |
| abstract class WidgetFactory protected () extends js.Object { | |
| def this(name: String) = js.native | |
| var `type`: String = js.native | |
| def getType(): String = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| abstract class NodeWidgetFactory extends WidgetFactory { | |
| def generateReactWidget(diagramEngine: DiagramEngine, node: NodeModel): JSX.Element | |
| } | |
| @js.native | |
| @JSGlobal | |
| abstract class LinkWidgetFactory extends WidgetFactory { | |
| def generateReactWidget(diagramEngine: DiagramEngine, link: LinkModel): JSX.Element | |
| } | |
| @js.native | |
| trait BaseModelListener extends BaseListener { | |
| def selectionChanged(item: BaseModel[BaseModelListener], isSelected: Boolean): Unit = js.native | |
| def entityRemoved(item: js.Any): Unit = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class BaseModel[T <: BaseModelListener] protected () extends BaseEntity[BaseModelListener] { | |
| def this(id: String) = js.native | |
| var selected: Boolean = js.native | |
| def getSelectedEntities(): js.Array[BaseModel[T]] = js.native | |
| def deSerialize(ob: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def getID(): String = js.native | |
| def isSelected(): Boolean = js.native | |
| def setSelected(selected: Boolean): js.Dynamic = js.native | |
| def remove(): js.Dynamic = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class PointModel protected () extends BaseModel[BaseModelListener] { | |
| def this(link: LinkModel, points: js.Any) = js.native | |
| var x: Double = js.native | |
| var y: Double = js.native | |
| var link: LinkModel = js.native | |
| def getSelectedEntities(): js.Dynamic = js.native | |
| def isConnectedToPort(): booleanl = js.native | |
| def deSerialize(ob: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def remove(): js.Dynamic = js.native | |
| def updateLocation(points: js.Any): js.Dynamic = js.native | |
| def getX(): Double = js.native | |
| def getY(): Double = js.native | |
| def getLink(): LinkModel = js.native | |
| } | |
| @js.native | |
| trait LinkModelListener extends BaseModelListener { | |
| def sourcePortChanged(item: LinkModel, target: Null | PortModel): Unit = js.native | |
| def targetPortChanged(item: LinkModel, target: Null | PortModel): Unit = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class LinkModel extends BaseModel[LinkModelListener] { | |
| var linkType: String = js.native | |
| var sourcePort: PortModel | Null = js.native | |
| var targetPort: PortModel | Null = js.native | |
| var points: js.Array[PointModel] = js.native | |
| def deSerialize(ob: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def remove(): js.Dynamic = js.native | |
| def isLastPoint(point: PointModel): js.Dynamic = js.native | |
| def getPointIndex(point: PointModel): js.Dynamic = js.native | |
| def getPointModel(id: String): PointModel | Null = js.native | |
| def getPortForPoint(point: PointModel): PortModel = js.native | |
| def getPointForPort(port: PortModel): PointModel = js.native | |
| def getFirstPoint(): PointModel = js.native | |
| def getLastPoint(): PointModel = js.native | |
| def setSourcePort(port: PortModel): js.Dynamic = js.native | |
| def getSourcePort(): PortModel = js.native | |
| def getTargetPort(): PortModel = js.native | |
| def setTargetPort(port: PortModel): js.Dynamic = js.native | |
| def getPoints(): js.Array[PointModel] = js.native | |
| def setPoints(points: js.Array[PointModel]): js.Dynamic = js.native | |
| def removePoint(pointModel: PointModel): js.Dynamic = js.native | |
| def addPoint(pointModel: PointModel, index: js.Any): js.Dynamic = js.native | |
| def getType(): String = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class PortModel protected () extends BaseModel[BaseModelListener] { | |
| def this(name: String, id: String) = js.native | |
| var name: String = js.native | |
| var parentNode: NodeModel = js.native | |
| var links: PortModel.Links = js.native | |
| def deSerialize(ob: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def getName(): String = js.native | |
| def getParent(): NodeModel = js.native | |
| def setParentNode(node: NodeModel): js.Dynamic = js.native | |
| def removeLink(link: LinkModel): js.Dynamic = js.native | |
| def addLink(link: LinkModel): js.Dynamic = js.native | |
| def getLinks(): js.Dictionary[LinkModel] = js.native | |
| def createLinkModel(): LinkModel | Null = js.native | |
| } | |
| object PortModel { | |
| @js.native | |
| trait Links extends js.Object { | |
| @JSBracketAccess | |
| def apply(id: String): LinkModel = js.native | |
| @JSBracketAccess | |
| def update(id: String, v: LinkModel): Unit = js.native | |
| } | |
| } | |
| @js.native | |
| @JSGlobal | |
| class NodeModel protected () extends BaseModel[BaseModelListener] { | |
| def this(nodeType: String, id: String) = js.native | |
| var nodeType: String = js.native | |
| var x: Double = js.native | |
| var y: Double = js.native | |
| var ports: NodeModel.Ports = js.native | |
| def setPosition(x: js.Any, y: js.Any): js.Dynamic = js.native | |
| def getSelectedEntities(): js.Dynamic = js.native | |
| def deSerialize(ob: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def remove(): js.Dynamic = js.native | |
| def getPortFromID(id: js.Any): PortModel | Null = js.native | |
| def getPort(name: String): PortModel | Null = js.native | |
| def getPorts(): js.Dictionary[PortModel] = js.native | |
| def removePort(port: PortModel): js.Dynamic = js.native | |
| def addPort(port: PortModel): PortModel = js.native | |
| def getType(): String = js.native | |
| } | |
| object NodeModel { | |
| @js.native | |
| trait Ports extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): PortModel = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: PortModel): Unit = js.native | |
| } | |
| } | |
| @js.native | |
| trait DiagramListener extends BaseListener { | |
| def nodesUpdated(node: js.Any, isCreated: Boolean): Unit = js.native | |
| def linksUpdated(link: js.Any, isCreated: Boolean): Unit = js.native | |
| def controlsUpdated(): Unit = js.native | |
| def offsetUpdated(model: DiagramModel, offsetX: Double, offsetY: Double): Unit = js.native | |
| def zoomUpdated(model: DiagramModel, zoom: Double): Unit = js.native | |
| def gridUpdated(model: DiagramModel, size: Double): Unit = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DiagramModel extends BaseEntity[DiagramListener] { | |
| var links: DiagramModel.Links = js.native | |
| var nodes: DiagramModel.Nodes = js.native | |
| var offsetX: Double = js.native | |
| var offsetY: Double = js.native | |
| var zoom: Double = js.native | |
| var rendered: Boolean = js.native | |
| var gridSize: Double = js.native | |
| def setGridSize(size: Double): js.Dynamic = js.native | |
| def getGridPosition(pos: js.Any): js.Dynamic = js.native | |
| def deSerializeDiagram(`object`: js.Any, diagramEngine: DiagramEngine): js.Dynamic = js.native | |
| def serializeDiagram(): js.Dynamic = js.native | |
| def clearSelection(ignore: BaseModel[BaseModelListener] | Null): js.Dynamic = js.native | |
| def getSelectedItems(): js.Array[BaseModel[BaseModelListener]] = js.native | |
| def setZoomLevel(zoom: Double): js.Dynamic = js.native | |
| def setOffset(offsetX: Double, offsetY: Double): js.Dynamic = js.native | |
| def setOffsetX(offsetX: Double): js.Dynamic = js.native | |
| def setOffsetY(offsetY: Double): js.Dynamic = js.native | |
| def getOffsetY(): js.Dynamic = js.native | |
| def getOffsetX(): js.Dynamic = js.native | |
| def getZoomLevel(): js.Dynamic = js.native | |
| def getNode(node: String | NodeModel): NodeModel | Null = js.native | |
| def getLink(link: String | LinkModel): LinkModel | Null = js.native | |
| def addLink(link: LinkModel): LinkModel = js.native | |
| def addNode(node: NodeModel): NodeModel = js.native | |
| def removeLink(link: LinkModel | String): js.Dynamic = js.native | |
| def removeNode(node: NodeModel | String): js.Dynamic = js.native | |
| def getLinks(): js.Dictionary[LinkModel] = js.native | |
| def getNodes(): js.Dictionary[NodeModel] = js.native | |
| } | |
| object DiagramModel { | |
| @js.native | |
| trait Links extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): LinkModel = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: LinkModel): Unit = js.native | |
| } | |
| @js.native | |
| trait Nodes extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): NodeModel = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: NodeModel): Unit = js.native | |
| } | |
| } | |
| @js.native | |
| @JSGlobal | |
| abstract class AbstractInstanceFactory[T <: BaseEntity[BaseListener]] protected () extends js.Object { | |
| def this(className: String) = js.native | |
| var className: String = js.native | |
| def getName(): js.Dynamic = js.native | |
| def getInstance(initialConfig: js.Any): T | |
| } | |
| @js.native | |
| trait DiagramEngineListener extends BaseListener { | |
| def nodeFactoriesUpdated(): Unit = js.native | |
| def linkFactoriesUpdated(): Unit = js.native | |
| def repaintCanvas(): Unit = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DiagramEngine extends BaseEntity[DiagramEngineListener] { | |
| var nodeFactories: DiagramEngine.NodeFactories = js.native | |
| var linkFactories: DiagramEngine.LinkFactories = js.native | |
| var instanceFactories: DiagramEngine.InstanceFactories = js.native | |
| var diagramModel: DiagramModel = js.native | |
| var canvas: Element = js.native | |
| var nodesRendered: Boolean = js.native | |
| var maxNumberPointsPerLink: Double = js.native | |
| def repaintCanvas(): js.Dynamic = js.native | |
| def clearRepaintEntities(): js.Dynamic = js.native | |
| def enableRepaintEntities(entities: js.Array[BaseModel[BaseModelListener]]): js.Dynamic = js.native | |
| def isModelLocked(model: BaseEntity[BaseListener]): js.Dynamic = js.native | |
| def recalculatePortsVisually(): js.Dynamic = js.native | |
| def canEntityRepaint(baseModel: BaseModel[BaseModelListener]): js.Dynamic = js.native | |
| def setCanvas(canvas: Element | Null): js.Dynamic = js.native | |
| def setDiagramModel(model: DiagramModel): js.Dynamic = js.native | |
| def getDiagramModel(): DiagramModel = js.native | |
| def getNodeFactories(): js.Dictionary[NodeWidgetFactory] = js.native | |
| def getLinkFactories(): js.Dictionary[LinkWidgetFactory] = js.native | |
| def getInstanceFactory(className: String): AbstractInstanceFactory[BaseEntity[BaseListener]] = js.native | |
| def registerInstanceFactory(factory: AbstractInstanceFactory[BaseEntity[BaseListener]]): js.Dynamic = js.native | |
| def registerNodeFactory(factory: NodeWidgetFactory): js.Dynamic = js.native | |
| def registerLinkFactory(factory: LinkWidgetFactory): js.Dynamic = js.native | |
| def getFactoryForNode(node: NodeModel): NodeWidgetFactory | Null = js.native | |
| def getFactoryForLink(link: LinkModel): LinkWidgetFactory | Null = js.native | |
| def generateWidgetForLink(link: LinkModel): JSX.Element | Null = js.native | |
| def generateWidgetForNode(node: NodeModel): JSX.Element | Null = js.native | |
| def getRelativeMousePoint(event: js.Any): js.Any = js.native | |
| def getRelativePoint(x: js.Any, y: js.Any): js.Dynamic = js.native | |
| def getNodePortElement(port: PortModel): js.Dynamic = js.native | |
| def getPortCenter(port: PortModel): js.Dynamic = js.native | |
| def getMaxNumberPointsPerLink(): Double = js.native | |
| def setMaxNumberPointsPerLink(max: Double): js.Dynamic = js.native | |
| def zoomToFit(): js.Dynamic = js.native | |
| } | |
| object DiagramEngine { | |
| @js.native | |
| trait NodeFactories extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): NodeWidgetFactory = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: NodeWidgetFactory): Unit = js.native | |
| } | |
| @js.native | |
| trait LinkFactories extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): LinkWidgetFactory = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: LinkWidgetFactory): Unit = js.native | |
| } | |
| @js.native | |
| trait InstanceFactories extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): AbstractInstanceFactory[BaseEntity[BaseListener]] = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: AbstractInstanceFactory[BaseEntity[BaseListener]]): Unit = js.native | |
| } | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DefaultNodeFactory extends NodeWidgetFactory { | |
| def generateReactWidget(diagramEngine: DiagramEngine, node: DefaultNodeModel): JSX.Element = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DefaultLinkFactory extends LinkWidgetFactory { | |
| def generateReactWidget(diagramEngine: DiagramEngine, link: LinkModel): JSX.Element = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DefaultNodeInstanceFactory extends AbstractInstanceFactory[DefaultNodeModel] { | |
| def getInstance(): js.Dynamic = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DefaultNodeModel protected () extends NodeModel { | |
| def this(name: String, color: String) = js.native | |
| var name: String = js.native | |
| var color: String = js.native | |
| var ports: DefaultNodeModel.Ports = js.native | |
| def deSerialize(`object`: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def getInPorts(): js.Array[DefaultPortModel] = js.native | |
| def getOutPorts(): js.Array[DefaultPortModel] = js.native | |
| } | |
| object DefaultNodeModel { | |
| @js.native | |
| trait Ports extends js.Object { | |
| @JSBracketAccess | |
| def apply(s: String): DefaultPortModel = js.native | |
| @JSBracketAccess | |
| def update(s: String, v: DefaultPortModel): Unit = js.native | |
| } | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DiamondPortModel protected () extends PortModel { | |
| def this(pos: String) = js.native | |
| var position: String = js.native | |
| def serialize(): js.Dynamic = js.native | |
| def deSerialize(data: js.Any): js.Dynamic = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DefaultPortInstanceFactory extends AbstractInstanceFactory[DefaultPortModel] { | |
| def getInstance(): js.Dynamic = js.native | |
| } | |
| @js.native | |
| @JSGlobal | |
| class DefaultPortModel protected () extends PortModel { | |
| def this(isInput: Boolean, name: String, label: String, id: String) = js.native | |
| var in: Boolean = js.native | |
| var label: String = js.native | |
| def deSerialize(`object`: js.Any): js.Dynamic = js.native | |
| def serialize(): js.Dynamic = js.native | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment