Skip to content

Instantly share code, notes, and snippets.

@dborisenko
Created December 11, 2017 22:09
Show Gist options
  • Select an option

  • Save dborisenko/36c0cdf6e385865854665e20788d4c54 to your computer and use it in GitHub Desktop.

Select an option

Save dborisenko/36c0cdf6e385865854665e20788d4c54 to your computer and use it in GitHub Desktop.
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