{"version":3,"file":"ngxvis.mjs","sources":["../../components/network/vis-network.service.ts","../../components/network/vis-network.directive.ts","../../components/timeline/vis-timeline.service.ts","../../components/timeline/vis-timeline.directive.ts","../../ngx-vis.ts","../../ngxvis.ts"],"sourcesContent":["import { EventEmitter, Injectable } from '@angular/core';\nimport {\n  BoundingBox,\n  ClusterOptions,\n  Data,\n  EdgeOptions,\n  FitOptions,\n  IdType,\n  MoveToOptions,\n  Network,\n  NetworkEvents,\n  NodeOptions,\n  OpenClusterOptions,\n  Options,\n  Position,\n} from 'vis-network';\n\n/**\n * A service to create, manage and control Network instances.\n *\n * @export\n * @class NetworkService\n */\n@Injectable()\nexport class VisNetworkService {\n  /**\n   * Fired when the user clicks the mouse or taps on a touchscreen device.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public click: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the user double clicks the mouse or double taps on a touchscreen device.\n   * Since a double click is in fact 2 clicks, 2 click events are fired, followed by a double click event.\n   * If you do not want to use the click events if a double click event is fired,\n   * just check the time between click events before processing them.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public doubleClick: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the user click on the canvas with the right mouse button.\n   * The right mouse button does not select by default.\n   * You can use the method getNodeAt to select the node if you want.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public oncontext: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the user clicks and holds the mouse or taps and holds on a touchscreen device.\n   * A click event is also fired in this case.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public hold: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired after drawing on the canvas has been completed.\n   * Can be used to draw on top of the network.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public release: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the selection has changed by user action.\n   * This means a node or edge has been selected, added to the selection or deselected.\n   * All select events are only triggered on click and hold.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public select: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when a node has been selected by the user.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public selectNode: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when a edge has been selected by the user.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public selectEdge: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when a node (or nodes) has (or have) been deselected by the user.\n   * The previous selection is the list of nodes and edges that were selected before the last user event.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public deselectNode: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when a edge (or edges) has (or have) been deselected by the user.\n   * The previous selection is the list of nodes and edges that were selected before the last user event.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public deselectEdge: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when starting a drag.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public dragStart: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when dragging node(s) or the view.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public dragging: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the drag has finished.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public dragEnd: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired if the option interaction:{hover:true} is enabled and the mouse hovers over a node.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public hoverNode: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired if the option interaction:{hover:true} is enabled and\n   * the mouse moved away from a node it was hovering over before.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public blurNode: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired if the option interaction:{hover:true} is enabled and the mouse hovers over an edge.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public hoverEdge: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired if the option interaction:{hover:true} is enabled and\n   * the mouse moved away from an edge it was hovering over before.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public blurEdge: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the user zooms in or out.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public zoom: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the popup (tooltip) is shown.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public showPopup: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the popup (tooltip) is hidden.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public hidePopup: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when stabilization starts.\n   * This is also the case when you drag a node and the physics\n   * simulation restarts to stabilize again.\n   * Stabilization does not neccesarily imply 'without showing'.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public startStabilizing: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when a multiple of the updateInterval number of iterations is reached.\n   * This only occurs in the 'hidden' stabilization.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public stabilizationProgress: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the 'hidden' stabilization finishes.\n   * This does not necessarily mean the network is stabilized;\n   * it could also mean that the amount of iterations defined in the options has been reached.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public stabilizationIterationsDone: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the 'hidden' stabilization finishes.\n   * This does not necessarily mean the network is stabilized;\n   * it could also mean that the amount of iterations defined in the options has been reached.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public stabilized: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the size of the canvas has been resized,\n   * either by a redraw call when the container div has changed in size,\n   * a setSize() call with new values or a setOptions() with new width and/or height values.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public resize: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired before the redrawing begins.\n   * The simulation step has completed at this point.\n   * Can be used to move custom elements before starting drawing the new frame.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public initRedraw: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired after the canvas has been cleared, scaled and translated to\n   * the viewing position but before all edges and nodes are drawn.\n   * Can be used to draw behind the network.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public beforeDrawing: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired after drawing on the canvas has been completed.\n   * Can be used to draw on top of the network.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public afterDrawing: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when an animation is finished.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public animationFinished: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when a user changes any option in the configurator.\n   * The options object can be used with the setOptions method or stringified using JSON.stringify().\n   * You do not have to manually put the options into the network: this is done automatically.\n   * You can use the event to store user options in the database.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf NetworkService\n   */\n  public configChange: EventEmitter<any> = new EventEmitter<any>();\n\n  private networks: { [id: string]: Network } = {};\n\n  /**\n   * Creates a new network instance.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {HTMLElement} container The HTML element that contains the network view.\n   * @param {Data} data The initial network nodes and edges.\n   * @param {Options} [options] The network options.\n   *\n   * @throws {Error} Thrown when a network with the same name already exists.\n   *\n   * @memberOf NetworkService\n   */\n  public create(visNetwork: string, container: HTMLElement, data: Data, options?: Options): void {\n    if (this.networks[visNetwork]) {\n      throw new Error(`Network with id ${visNetwork} already exists.`);\n    }\n\n    this.networks[visNetwork] = new Network(container, data, options);\n  }\n\n  /**\n   * Remove the network from the DOM and remove all Hammer bindings and references.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @memberOf NetworkService\n   */\n  public destroy(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].destroy();\n      delete this.networks[visNetwork];\n    }\n  }\n\n  /**\n   * Activates an event.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {NetworkEvents} eventName The event name.\n   * @param {boolean} preventDefault Stops the default behavior of the event.\n   * @returns {boolean} Returns true when the event was activated.\n   *\n   * @memberOf NetworkService\n   */\n  public on(visNetwork: string, eventName: NetworkEvents, preventDefault?: boolean): boolean {\n    if (this.networks[visNetwork]) {\n      /* tslint:disable */\n      const that: { [index: string]: any } = this;\n      /* tslint:enable */\n      this.networks[visNetwork].on(eventName, (params: any) => {\n        const emitter = that[eventName] as EventEmitter<any>;\n        if (emitter) {\n          emitter.emit(params ? [visNetwork].concat(params) : visNetwork);\n        }\n        if (preventDefault && params.event) {\n          params.event.preventDefault();\n        }\n      });\n\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Deactivates an event.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {NetworkEvents} eventName The event name.\n   *\n   * @memberOf NetworkService\n   */\n  public off(visNetwork: string, eventName: NetworkEvents): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].off(eventName);\n    }\n  }\n\n  /**\n   * Activates an event listener only once.\n   * After it has taken place, the event listener will be removed.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {NetworkEvents} eventName The event name.\n   * @returns {boolean} Returns true when the event was activated.\n   *\n   * @memberOf NetworkService\n   */\n  public once(visNetwork: string, eventName: NetworkEvents): boolean {\n    if (this.networks[visNetwork]) {\n      /* tslint:disable */\n      const that: { [index: string]: any } = this;\n      /* tslint:disable */\n      this.networks[visNetwork].on(eventName, (params: any) => {\n        const emitter = that[eventName] as EventEmitter<any>;\n        if (emitter) {\n          emitter.emit(params ? [visNetwork].concat(params) : visNetwork);\n          this.off(visNetwork, eventName);\n        }\n      });\n\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Override all the data in the network.\n   * If stabilization is enabled in the physics module,\n   * the network will stabilize again.\n   * This method is also performed when first initializing the network.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {Data} data The network data.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public setData(visNetwork: string, data: Data): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].setData(data);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Set the options.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {Options} options The network options.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public setOptions(visNetwork: string, options: Options): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].setOptions(options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Selects the nodes corresponding to the id's in the input array.\n   * This method unselects all other objects before selecting its own objects.\n   * Does not fire events.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType[]} nodeIds The node ids that should be selected.\n   * @param {boolean} [highlightEdges] If highlightEdges is true or undefined,\n   *                                   the neighbouring edges will also be selected.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public selectNodes(visNetwork: string, nodeIds: IdType[], highlightEdges?: boolean): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].selectNodes(nodeIds, highlightEdges);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Selects the nodes and edges corresponding to the id's in the input arrays.\n   * Does not fire events.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param { nodes: IdType[], edges: IdType[] } selection The node and edge ids that should be selected.\n   * @param { unselectAll?: boolean, highlightEdges?: boolean } [options]\n   * If unselectAll is true or undefined, the other objects will be deselected.\n   * If highlightEdges is true or undefined, the neighbouring edges will also be selected.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public setSelection(\n    visNetwork: string,\n    selection: { nodes: IdType[]; edges: IdType[] },\n    options: { unselectAll?: boolean; highlightEdges?: boolean } = {}\n  ): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].setSelection(selection, options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Returns an object with selected nodes and edges ids.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @returns {{ nodes: IdType[], edges: IdType[] }}\n   * The selected node and edge ids or undefined when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public getSelection(visNetwork: string): { nodes: IdType[]; edges: IdType[] } {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getSelection();\n    }\n    return undefined;\n  }\n\n  /**\n   * Returns an array of selected node ids.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @returns {IdType[]} The selected node ids or undefined when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public getSelectedNodes(visNetwork: string): IdType[] {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getSelectedNodes();\n    }\n    return undefined;\n  }\n\n  /**\n   * Returns an array of selected edge ids.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @returns {IdType[]} The selected edge ids or undefined when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public getSelectedEdges(visNetwork: string): IdType[] {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getSelectedEdges();\n    }\n    return undefined;\n  }\n\n  /**\n   * Unselect all objects.\n   * Does not fire events.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public unselectAll(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].unselectAll();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Zooms out so all nodes fit on the canvas.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {VisFitOptions} [options] Options to customize.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public fit(visNetwork: string, options?: FitOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].fit(options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Redraw the network.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public redraw(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].redraw();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Go into addNode mode. Having edit mode or manipulation enabled is not required.\n   * To get out of this mode, call disableEditMode(). The callback functions defined in handlerFunctions still apply.\n   * To use these methods without having the manipulation GUI, make sure you set enabled to false.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public addNodeMode(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].addNodeMode();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Programatically enable the edit mode.\n   * Similar effect to pressing the edit button.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public enableEditMode(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].enableEditMode();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Go into addEdge mode.\n   * The explaination from addNodeMode applies here as well.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public addEdgeMode(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].addEdgeMode();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Programatically disable the edit mode.\n   * Similar effect to pressing the close icon\n   * (small cross in the corner of the toolbar).\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public disableEditMode(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].disableEditMode();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Delete selected.\n   * Having edit mode or manipulation enabled is not required.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public deleteSelected(visNetwork: string): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].deleteSelected();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Makes a cluster.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {ClusterOptions} [options] The joinCondition function is presented with all nodes.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public cluster(visNetwork: string, options?: ClusterOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].cluster(options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * This method looks at the provided node and makes a cluster of it and all it's connected nodes.\n   * The behaviour can be customized by proving the options object.\n   * All options of this object are explained below.\n   * The joinCondition is only presented with the connected nodes.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} nodeId the id of the node\n   * @param {ClusterOptions} [options] the cluster options\n   *\n   * @memberOf NetworkService\n   */\n  public clusterByConnection(visNetwork: string, nodeId: IdType, options?: ClusterOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].clusterByConnection(nodeId as any, options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * This method checks all nodes in the network and those with a equal or higher\n   * amount of edges than specified with the hubsize qualify.\n   * If a hubsize is not defined, the hubsize will be determined as the average\n   * value plus two standard deviations.\n   * For all qualifying nodes, clusterByConnection is performed on each of them.\n   * The options object is described for clusterByConnection and does the same here.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {number} [hubsize] optional hubsize\n   * @param {ClusterOptions} [options] optional cluster options\n   *\n   * @memberOf NetworkService\n   */\n  public clusterByHubsize(visNetwork: string, hubsize?: number, options?: ClusterOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].clusterByHubsize(hubsize, options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * This method will cluster all nodes with 1 edge with their respective connected node.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {ClusterOptions} [options] optional cluster options\n   *\n   * @memberOf NetworkService\n   */\n  public clusterOutliers(visNetwork: string, options?: ClusterOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].clusterOutliers(options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Nodes can be in clusters.\n   * Clusters can also be in clusters.\n   * This function returns an array of nodeIds showing where the node is.\n   *\n   * Example:\n   * cluster 'A' contains cluster 'B', cluster 'B' contains cluster 'C',\n   * cluster 'C' contains node 'fred'.\n   *\n   * network.clustering.findNode('fred') will return ['A','B','C','fred'].\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} nodeId the node id.\n   * @returns {IdType[]} an array of nodeIds showing where the node is\n   *\n   * @memberOf NetworkService\n   */\n  public findNode(visNetwork: string, nodeId: IdType): IdType[] {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].findNode(nodeId);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Similar to findNode in that it returns all the edge ids that were\n   * created from the provided edge during clustering.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} baseEdgeId the base edge id\n   * @returns {IdType[]} an array of edgeIds\n   *\n   * @memberOf NetworkService\n   */\n  public getClusteredEdges(visNetwork: string, baseEdgeId: IdType): IdType[] {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getClusteredEdges(baseEdgeId);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * When a clusteredEdgeId is available, this method will return the original\n   * baseEdgeId provided in data.edges ie.\n   * After clustering the 'SelectEdge' event is fired but provides only the clustered edge.\n   * This method can then be used to return the baseEdgeId.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} clusteredEdgeId\n   * @returns {IdType}\n   *\n   * @memberOf NetworkService\n   *\n   */\n  public getBaseEdge(visNetwork: string, clusteredEdgeId: IdType): IdType {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getBaseEdge(clusteredEdgeId);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Visible edges between clustered nodes are not the same edge as the ones provided\n   * in data.edges passed on network creation. With each layer of clustering, copies of\n   * the edges between clusters are created and the previous edges are hidden,\n   * until the cluster is opened. This method takes an edgeId (ie. a base edgeId from data.edges)\n   * and applys the options to it and any edges that were created from it while clustering.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} startEdgeId\n   * @param {VisEdgeOptions} [options]\n   *\n   * @memberOf NetworkService\n   *\n   */\n  public updateEdge(visNetwork: string, startEdgeId: IdType, options?: EdgeOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].updateEdge(startEdgeId, options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Clustered Nodes when created are not contained in the original data.nodes\n   * passed on network creation. This method updates the cluster node.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} clusteredNodeId\n   * @param {NodeOptions} options\n   *\n   * @memberOf NetworkService\n   */\n  public updateClusteredNode(visNetwork: string, clusteredNodeId: IdType, options?: NodeOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].updateClusteredNode(clusteredNodeId, options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Returns an array of all nodeIds of the nodes that\n   * would be released if you open the cluster.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} clusterNodeId the id of the cluster node\n   * @returns {IdType[]}\n   *\n   * @memberOf NetworkService\n   */\n  public getNodesInCluster(visNetwork: string, clusterNodeId: IdType): IdType[] {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getNodesInCluster(clusterNodeId);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Opens the cluster, releases the contained nodes and edges,\n   * removing the cluster node and cluster edges.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} nodeId The node id that represents the cluster.\n   * @param {OpenClusterOptions} [options] Cluster options.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public openCluster(visNetwork: string, nodeId: IdType, options?: OpenClusterOptions): void {\n    if (this.networks[visNetwork]) {\n      this.networks[visNetwork].openCluster(nodeId, options);\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n\n  /**\n   * Returns true if the node whose ID has been supplied is a cluster.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} nodeId The associated node id.\n   * @returns {boolean} True if the node whose ID has been supplied is a cluster.\n   *\n   * @memberOf NetworkService\n   */\n  public isCluster(visNetwork: string, nodeId: IdType): boolean {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].isCluster(nodeId);\n    }\n\n    return false;\n  }\n\n  /**\n   * If you like the layout of your network and would like it to start in the same way next time,\n   * ask for the seed using this method and put it in the layout.randomSeed option.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @returns {number} The seed of the current network or -1 when the network is not defined.\n   *\n   * @memberOf NetworkService\n   */\n  public getSeed(visNetwork: string): number {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getSeed() as number;\n    }\n\n    return -1;\n  }\n\n  /**\n   * This function converts canvas coordinates to coordinates on the DOM.\n   * Input and output are in the form of {x:Number,y:Number}.\n   * The DOM values are relative to the network container.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {Position} position The canvas position.\n   * @returns {Position} The DOM position.\n   *\n   * @memberOf NetworkService\n   */\n  public canvasToDOM(visNetwork: string, position: Position) {\n    return this.networks[visNetwork].canvasToDOM(position);\n  }\n\n  /**\n   * This function converts DOM coordinates to coordinates on the canvas.\n   * Input and output are in the form of {x:Number,y:Number}.\n   * The DOM values are relative to the network container.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {Position} position The DOM position.\n   * @returns {Position} The canvas position.\n   *\n   * @memberOf NetworkService\n   */\n  public DOMtoCanvas(visNetwork: string, position: Position) {\n    return this.networks[visNetwork].DOMtoCanvas(position);\n  }\n\n  /**\n   * This function looks up the node at the given DOM coordinates on the canvas.\n   * Input and output are in the form of {x:Number,y:Number}.\n   * The DOM values are relative to the network container -> DOM not Canvas coords.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {Position} position The DOM position.\n   * @returns {IdType} nodeId The associated node id.\n   *\n   * @memberOf NetworkService\n   */\n  public getNodeAt(visNetwork: string, position: Position) {\n    return this.networks[visNetwork].getNodeAt(position);\n  }\n\n  /**\n   * This function looks up the edge at the given DOM coordinates on the canvas.\n   * Input and output are in the form of {x:Number,y:Number}.\n   * The DOM values are relative to the network container -> DOM not Canvas coords.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {Position} position The DOM position.\n   * @returns {IdType} edgeId The associated edge id.\n   *\n   * @memberOf NetworkService\n   */\n  public getEdgeAt(visNetwork: string, position: Position) {\n    return this.networks[visNetwork].getEdgeAt(position);\n  }\n\n  /**\n   * This function looks up the edges for a given nodeId.\n   * The DOM values are relative to the network container -> DOM not Canvas coords.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {IdType} nodeId The associated node id.\n   * @returns {IdType[]} Return array of edge ids\n   *\n   * @memberOf NetworkService\n   */\n  public getConnectedEdges(visNetwork: string, nodeId: IdType) {\n    return this.networks[visNetwork].getConnectedEdges(nodeId);\n  }\n\n  /**\n   * Returns an array of nodeIds of the all the nodes that are directly connected to this node.\n   * If you supply an edgeId, vis will first match the id to nodes.\n   * If no match is found, it will search in the edgelist and return an array: [fromId, toId].\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param nodeOrEdgeId a node or edge id\n   * @returns {IdType[]} Return array of node ids\n   */\n  public getConnectedNodes(visNetwork: string, nodeOrEdgeId: IdType) {\n    return this.networks[visNetwork].getConnectedNodes(nodeOrEdgeId);\n  }\n\n  /**\n   * Returns the positions of the nodes.\n   * @param {string} visNetwork The network name/identifier.\n   * @param {Array.<Node.id>|String} [ids]  --> optional, can be array of nodeIds, can be string\n   * @returns {{}}\n   */\n  public getPositions(visNetwork: string, nodeIds?: IdType[]) {\n    return this.networks[visNetwork].getPositions(nodeIds);\n  }\n\n  /**\n   * Returns the positions of the nodes.\n   * @param {string} visNetwork The network name/identifier.\n   */\n  public getBoundingBox(visNetwork: string, nodeId: IdType): BoundingBox {\n    return this.networks[visNetwork].getBoundingBox(nodeId);\n  }\n\n  /**\n   * Returns the positions of the nodes.\n   * @param {string} visNetwork The network name/identifier.\n   */\n  public storePositions(visNetwork: string): void {\n    return this.networks[visNetwork].storePositions();\n  }\n\n  /**\n   * You can animate or move the camera using the moveTo method.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   * @param {MoveToOptions} options Options for moveTo function.\n   */\n  public moveTo(visNetwork: string, moveToOptions: MoveToOptions) {\n    return this.networks[visNetwork].moveTo(moveToOptions);\n  }\n\n  /**\n   * Start the physics simulation.\n   * This is normally done whenever needed and is only really useful\n   * if you stop the simulation yourself and wish to continue it afterwards.\n   * @param {string} visNetwork The network name/identifier.\n   */\n  public startSimulation(visNetwork: string) {\n    return this.networks[visNetwork].startSimulation();\n  }\n\n  /**\n   * This stops the physics simulation and triggers a stabilized event.\n   * Tt can be restarted by dragging a node,\n   * altering the dataset or calling startSimulation().\n   * @param {string} visNetwork The network name/identifier.\n   */\n  public stopSimulation(visNetwork: string) {\n    return this.networks[visNetwork].stopSimulation();\n  }\n\n  /**\n   * Returns the current scale of the network. 1.0 is comparible to 100%, 0 is zoomed out infinitely.\n   *\n   * @param {string} visNetwork The network name/identifier.\n   *\n   * @throws {Error} Thrown when the network does not exist.\n   *\n   * @memberOf NetworkService\n   */\n  public getScale(visNetwork: string): number {\n    if (this.networks[visNetwork]) {\n      return this.networks[visNetwork].getScale();\n    } else {\n      throw new Error(`Network with id ${visNetwork} not found.`);\n    }\n  }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\nimport { Data, Options } from 'vis-network';\n\nimport { VisNetworkService } from './vis-network.service';\n\n/**\n * Use this directive with a div container to show network data.\n *\n * @export\n * @class VisNetworkDirective\n * @implements {OnInit}\n * @implements {OnDestroy}\n * @implements {OnChanges}\n */\n@Directive({\n  selector: '[visNetwork]',\n})\nexport class VisNetworkDirective implements OnInit, OnDestroy, OnChanges {\n  /**\n   * The name or identifier of the network (must be unique in your application).\n   * This property is used once on init and must not be changed.\n   *\n   * @type {string}\n   * @memberOf VisNetworkDirective\n   */\n  @Input('visNetwork')\n  public visNetwork: string;\n\n  /**\n   * The data that will be used to create the network.\n   * Changes to the nodes or edges property won't be detected but\n   * changes to the reference of this object.\n   * Changes lead to a call to setData of this network instance.\n   *\n   * @type {Data}\n   * @memberOf VisNetworkDirective\n   */\n  @Input()\n  public visNetworkData: Data;\n\n  /**\n   * The options that will be used with this network instance.\n   * Only reference changes to the whole options object will be detected\n   * but not changes to properties.\n   * Changes lead to a call to setOptions of the network instance.\n   *\n   * @type {VisOptions}\n   * @memberOf VisNetworkDirective\n   */\n  @Input()\n  public visNetworkOptions: Options;\n\n  /**\n   * This event will be raised when the network is initialized.\n   * At this point of time the network is successfully registered\n   * with the VisNetworkService and you can register to events.\n   * The event data is the name of the network as a string.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisNetworkDirective\n   */\n  @Output()\n  public initialized: EventEmitter<any> = new EventEmitter<any>();\n\n  private visNetworkContainer: any;\n  private isInitialized: boolean = false;\n\n  /**\n   * Creates an instance of VisNetworkDirective.\n   *\n   * @param {ElementRef} elementRef The HTML element reference.\n   * @param {VisNetworkService} visNetworkService The VisNetworkService.\n   *\n   * @memberOf VisNetworkDirective\n   */\n  public constructor(private elementRef: ElementRef, private visNetworkService: VisNetworkService) {\n    this.visNetworkContainer = elementRef.nativeElement;\n  }\n\n  /**\n   * Create the network when at least visNetwork and visData\n   * are defined.\n   *\n   * @memberOf VisNetworkDirective\n   */\n  public ngOnInit(): void {\n    if (!this.isInitialized && this.visNetwork && this.visNetworkData) {\n      this.createNetwork();\n    }\n  }\n\n  /**\n   * Update the network data or options on reference changes to\n   * the visData or visOptions properties.\n   *\n   * @param {{[propName: string]: SimpleChange}} changes\n   *\n   * @memberOf VisNetworkDirective\n   */\n  public ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n    if (!this.isInitialized && this.visNetwork && this.visNetworkData) {\n      this.createNetwork();\n    }\n\n    for (const propertyName in changes) {\n      if (changes.hasOwnProperty(propertyName)) {\n        const change = changes[propertyName];\n        if (!change.isFirstChange()) {\n          if (propertyName === 'visNetworkData') {\n            this.visNetworkService.setData(this.visNetwork, changes[propertyName].currentValue);\n          }\n          if (propertyName === 'visNetworkOptions') {\n            this.visNetworkService.setOptions(this.visNetwork, changes[propertyName].currentValue);\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Calls the destroy function for this network instance.\n   *\n   * @memberOf VisNetworkDirective\n   */\n  public ngOnDestroy(): void {\n    this.isInitialized = false;\n    this.visNetworkService.destroy(this.visNetwork);\n  }\n\n  private createNetwork(): void {\n    this.visNetworkService.create(this.visNetwork, this.visNetworkContainer, this.visNetworkData, this.visNetworkOptions);\n    this.isInitialized = true;\n    this.initialized.emit(this.visNetwork);\n  }\n}\n","import { EventEmitter, Injectable, NgZone } from '@angular/core';\nimport {\n  DataGroupCollectionType,\n  DataItemCollectionType,\n  DateType,\n  IdType,\n  Timeline,\n  TimelineAnimationOptions,\n  TimelineEventPropertiesResult,\n  TimelineOptions,\n} from 'vis-timeline';\n\n/**\n * A service to create, manage and control VisTimeline instances.\n *\n * @export\n * @class VisTimelineService\n */\n@Injectable()\nexport class VisTimelineService {\n  /**\n   * Fired when the current time bar redraws.\n   * The rate depends on the zoom level.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public currentTimeTick: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when clicked inside the Timeline.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public click: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when right-clicked inside the Timeline.\n   * Note that in order to prevent the context menu from showing up,\n   * default behavior of the event must be stopped.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public contextmenu: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when double clicked inside the Timeline.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public doubleClick: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * \tFired after the dragging of a group is finished.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public groupDragged: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired once after each graph redraw.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public changed: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired repeatedly when the timeline window is being changed.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public rangechange: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired once after the timeline window has been changed.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public rangechanged: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired after the user selects or deselects items by tapping or holding them.\n   * When a use taps an already selected item, the select event is fired again.\n   * Not fired when the method setSelectionis executed.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public select: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the user moves the mouse over an item.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public itemover: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired when the user moves the mouse out of an item.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public itemout: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired repeatedly when the user is dragging the custom time bar.\n   * Only available when the custom time bar is enabled.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public timechange: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Fired once after the user has dragged the custom time bar.\n   * Only available when the custom time bar is enabled.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineService\n   */\n  public timechanged: EventEmitter<any> = new EventEmitter<any>();\n\n  private events: Map<string, EventEmitter<any>> = new Map();\n\n  private timelines: { [id: string]: Timeline } = {};\n\n  constructor(\n    private ngZone: NgZone,\n  ) { }\n\n  /**\n   * Creates a new timeline instance.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {HTMLElement} container The HTML element that contains the timeline view.\n   * @param {VisTimelineItems} items The initial timeline items.\n   * @param {VisTimelineOptions} [options] The timeline options.\n   *\n   * @throws {Error} Thrown when timeline already exists.\n   *\n   * @memberOf VisTimelineService\n   */\n  public createWithItems(visTimeline: string, container: HTMLElement, items: DataItemCollectionType, options?: TimelineOptions): void {\n    if (this.timelines[visTimeline]) {\n      throw new Error(this.alreadyExistsError(visTimeline));\n    }\n\n    this.timelines[visTimeline] = this.ngZone.runOutsideAngular(() => new Timeline(container, items, this.wrapCallbacksWithNgZone(options)));\n  }\n\n  /**\n   * Creates a new timeline instance.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {HTMLElement} container The HTML element that contains the timeline view.\n   * @param {VisTimelineItems} items The initial timeline items.\n   * @param {VisTimelineGroups} groups The initial timeline groups.\n   * @param {VisTimelineOptions} [options] The timeline options.\n   *\n   * @throws {Error} Thrown when timeline already exists.\n   *\n   * @memberOf VisTimelineService\n   */\n  public createWithItemsAndGroups(\n    visTimeline: string,\n    container: HTMLElement,\n    items: DataItemCollectionType,\n    groups: DataGroupCollectionType,\n    options?: TimelineOptions,\n  ): void {\n    if (this.timelines[visTimeline]) {\n      throw new Error(this.alreadyExistsError(visTimeline));\n    }\n\n    this.timelines[visTimeline] = this.ngZone.runOutsideAngular(() => new Timeline(container, items, groups, this.wrapCallbacksWithNgZone(options)));\n  }\n\n  /**\n   * Add new vertical bar representing a custom time that can be dragged by the user.\n   * The id is added as CSS class name of the custom time bar,\n   * allowing to style multiple time bars differently.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {DateType} time Parameter time can be a Date, Number, or String, and is new Date() by default.\n   * @param {IdType} [id] Parameter id can be Number or String and is undefined by default.\n   * @returns {IdType} The method returns id of the created bar.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public addCustomTime(visTimeline: string, time: DateType, id?: IdType): IdType {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].addCustomTime(time, id);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Adjust the visible window such that it fits all items.\n   * See also function focus(id).\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {TimelineAnimationOptions} [options] Optional options.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public fit(visTimeline: string, options?: TimelineAnimationOptions): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].fit(options);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Adjust the visible window such that the selected item is centered on screen.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {IdType} id The id of the item.\n   * @param {TimelineAnimationOptions} [options] Options options.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public focusOnId(visTimeline: string, id: IdType, options?: TimelineAnimationOptions): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].focus(id, options);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Adjust the visible window such that the selected items are centered on screen.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {IdType[]} ids The item ids.\n   * @param {TimelineAnimationOptions} [options] Optional options.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public focusOnIds(visTimeline: string, ids: IdType[], options?: TimelineAnimationOptions): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].focus(ids, options);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Get the current time.\n   * Only applicable when option showCurrentTime is true.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @returns {Date} The current time.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public getCurrentTime(visTimeline: string): Date {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].getCurrentTime();\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Retrieve the custom time from the custom time bar with given id.\n   * Id is undefined by default.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {IdType} [id] The time bar id.\n   * @returns {Date} The custom time.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public getCustomTime(visTimeline: string, id?: IdType): Date {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].getCustomTime(id);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Returns an Object with relevant properties from an event.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {Event} event The event.\n   * @returns {VisTimelineEventPropertiesResult} Properties of an event\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public getEventProperties(visTimeline: string, event: Event): TimelineEventPropertiesResult {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].getEventProperties(event);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Get the range of all the items as an object containing min: Date and max: Date.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @returns {{ min: Date, max: Date }} The min and max dates.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public getItemRange(visTimeline: string): { min: Date; max: Date } {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].getItemRange();\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Get an array with the ids of the currently selected items.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @returns {IdType[]} The currently selected items.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public getSelection(visTimeline: string): IdType[] {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].getSelection();\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Get an array with the ids of the currently visible items.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @returns {IdType[]} The currently visible items.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public getVisibleItems(visTimeline: string): IdType[] {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].getVisibleItems();\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Get the current visible window.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @returns {{ start: Date, end: Date }} Returns an object with properties start: Date and end: Date.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public getWindow(visTimeline: string): { start: Date; end: Date } {\n    if (this.timelines[visTimeline]) {\n      return this.timelines[visTimeline].getWindow();\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * \tMove the window such that given time is centered on screen.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {DateType} time Parameter time can be a Date, Number, or String.\n   * @param {TimelineAnimationOptions} [options] Optional options.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public moveTo(visTimeline: string, time: DateType, options?: TimelineAnimationOptions): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].moveTo(time, options);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Force a redraw of the Timeline.\n   * The size of all items will be recalculated.\n   * Can be useful to manually redraw when option autoResize=false and the window has been resized,\n   * or when the items CSS has been changed.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public redraw(visTimeline: string): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].redraw();\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Remove vertical bars previously added to the timeline via addCustomTime method.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {IdType} id Parameter id is the ID of the custom vertical bar returned by addCustomTime method.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public removeCustomTime(visTimeline: string, id: IdType): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].removeCustomTime(id);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Set a current time.\n   * This can be used for example to ensure that a client's time is synchronized\n   * with a shared server time.\n   * Only applicable when option showCurrentTime is true.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {DateType} time time can be a Date object, numeric timestamp, or ISO date string.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setCurrentTime(visTimeline: string, time: DateType): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setCurrentTime(time);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * \tAdjust the time of a custom time bar.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {DateType} time Parameter time can be a Date object, numeric timestamp, or ISO date string.\n   * @param {IdType} [id] Parameter id is the id of the custom time bar, and is undefined by default.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setCustomTime(visTimeline: string, time: DateType, id?: IdType): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setCustomTime(time, id);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Adjust the title attribute of a custom time bar.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {string} title Parameter title is the string to be set as title.\n   *                       Use empty string to hide the title completely.\n   * @param {IdType} [id] Parameter id is the id of the custom time bar, and is undefined by default.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setCustomTimeTitle(visTimeline: string, title: string, id?: IdType): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setCustomTimeTitle(title, id);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Set both groups and items at once.\n   * Both properties are optional.\n   * This is a convenience method for individually calling both setItems(items) and setGroups(groups).\n   * Both items and groups can be an Array with Objects, a DataSet (offering 2 way data binding),\n   * or a DataView (offering 1 way data binding).\n   * For each of the groups, the items of the timeline are filtered on the property group,\n   * which must correspond with the id of the group.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {{ groups?: VisTimelineGroups; items?: VisTimelineItems }} data The new timline data.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setData(visTimeline: string, data: { groups?: DataGroupCollectionType; items?: DataItemCollectionType }): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setData(data);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Set a data set with groups for the Timeline.\n   * For each of the groups, the items of the timeline are filtered on the property group,\n   * which must correspond with the id of the group.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {VisTimelineGroups} groups a DataSet (offering 2 way data binding)\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setGroups(visTimeline: string, groups: DataGroupCollectionType): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setGroups(groups);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Set a data set with items for the Timeline.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {VisTimelineItems} items can be an Array with Objects, a DataSet (offering 2 way data binding)\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setItems(visTimeline: string, items: DataItemCollectionType): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setItems(items);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Set or update options.\n   * It is possible to change any option of the timeline at any time.\n   * You can for example switch orientation on the fly.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {VisTimelineOptions} options The new options of the timeline.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setOptions(visTimeline: string, options: TimelineOptions): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setOptions(options);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Select one item by its id.#\n   * The currently selected items will be unselected.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {IdType} id The id of the item that should be selected.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setSelectionToId(visTimeline: string, id: IdType): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setSelection(id);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Select multiple items by their id.\n   * The currently selected items will be unselected.\n   * To unselect all selected items, call `setSelection([])`.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {IdType[]} ids The ids of the irems that should be selected.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setSelectionToIds(visTimeline: string, ids: IdType[]): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setSelection(ids);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Set the current visible window.\n   *\n   * If the parameter value of start or end is null, the parameter will be left unchanged.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {DateType} start The parameters start can be a Date, Number, or String.\n   * @param {DateType} end The parameters end can be a Date, Number, or String.\n   * @param {TimelineAnimationOptions} [options] Optional options.\n   *\n   * @throws {Error} Thrown when timeline does not exist.\n   *\n   * @memberOf VisTimelineService\n   */\n  public setWindow(visTimeline: string, start: DateType, end: DateType, options?: TimelineAnimationOptions): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].setWindow(start, end, options);\n    } else {\n      throw new Error(this.doesNotExistError(visTimeline));\n    }\n  }\n\n  /**\n   * Destroy the Timeline.\n   * The timeline is removed from memory.\n   * All DOM elements and event listeners are cleaned up.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   *\n   * @memberOf VisTimelineService\n   */\n  public destroy(visTimeline: string): void {\n    if (this.timelines[visTimeline]) {\n      this.timelines[visTimeline].destroy();\n      delete this.timelines[visTimeline];\n    }\n  }\n\n  /**\n   * Activates an event.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {string} eventName The event name.\n   * @param {boolean} preventDefault Stops the default behavior of the event.\n   * @returns {boolean} Returns true when the event was activated.\n   *\n   * @memberOf VisTimelineService\n   */\n  public on(visTimeline: string, eventName: string, preventDefault?: boolean): boolean {\n    if (this.timelines[visTimeline]) {\n      this.events.set(eventName, new EventEmitter<any>());\n      // tslint:disable-next-line\n      const that: { [index: string]: any } = this;\n      this.timelines[visTimeline].on(eventName, (params: any) => {\n        const emitter = (that[eventName] || that.events.get(eventName)) as EventEmitter<any>;\n        if (emitter) {\n          emitter.emit(params ? [visTimeline].concat(params) : visTimeline);\n        }\n        if (preventDefault && params.event) {\n          params.event.preventDefault();\n        }\n      });\n\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Deactivates an event.\n   *\n   * @param {string} visTimeline The timeline name/identifier.\n   * @param {string} eventName The event name.\n   *\n   * @memberOf VisTimelineService\n   */\n  public off(visTimeline: string, eventName: string): void {\n    if (this.timelines[visTimeline]) {\n      this.events.delete(eventName);\n      this.timelines[visTimeline].off(eventName, undefined);\n    }\n  }\n\n  /**\n   * Get the event emitter associated with the specified event name.\n   * @param {string} eventName The event name.\n   * @returns {EventEmitter<any>} The event emitter of the specified event name.\n   */\n  public getEmitter(eventName: string): EventEmitter<any> {\n    return this.events.get(eventName);\n  }\n\n  private doesNotExistError(visTimeline: string): string {\n    return `Timeline with id ${visTimeline} does not exist.`;\n  }\n\n  private alreadyExistsError(visTimeline: string): string {\n    return `Timeline with id ${visTimeline} already exists.`;\n  }\n\n  private wrapCallbacksWithNgZone(options: TimelineOptions): TimelineOptions {\n    const updatedOptions: any = { ...options };\n    const callbackFunctions: (keyof TimelineOptions)[] = [\n      'onAdd',\n      'onAddGroup',\n      'onDropObjectOnItem',\n      'onInitialDrawComplete',\n      'onUpdate',\n      'onMove',\n      'onMoveGroup',\n      'onMoving',\n      'onRemove',\n      'onRemoveGroup',\n    ];\n\n    callbackFunctions\n      .filter((callbackFunction) => updatedOptions.hasOwnProperty(callbackFunction))\n      .forEach((callbackFunction) => {\n        updatedOptions[callbackFunction] = (...params: any[]) => this.ngZone.run(() => options[callbackFunction](...params));\n      });\n\n    return updatedOptions;\n\n  }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\nimport { DataGroupCollectionType, DataItemCollectionType, TimelineOptions } from 'vis-timeline';\n\nimport { VisTimelineService } from './vis-timeline.service';\n\n/**\n * Use this directive with a div container to show timeline data.\n *\n * @export\n * @class VisTimelineDirective\n * @implements {OnInit}\n * @implements {OnDestroy}\n * @implements {OnChanges}\n */\n@Directive({\n  selector: '[visTimeline]',\n})\nexport class VisTimelineDirective implements OnInit, OnDestroy, OnChanges {\n  /**\n   * The name or identifier of the timeline (must be unique in your application).\n   * This property is used once on init and must not be changed.\n   *\n   * @type {string}\n   * @memberOf VisTimelineDirective\n   */\n  @Input('visTimeline')\n  public visTimeline: string;\n\n  /**\n   * The data that will be used to create the timeline.\n   * Changes will be detected. If the reference changes then\n   * setData will be called on this timeline instance.\n   *\n   * @type {VisTimelineItems}\n   * @memberOf VisTimelineDirective\n   */\n  @Input()\n  public visTimelineItems: DataItemCollectionType;\n\n  /**\n   * The groups that will be used to create the timeline.\n   * Changes will be detected. If the reference changes then\n   * setGroups will be called on this timeline instance.\n   *\n   * @type {VisTimelineGroups}\n   * @memberOf VisTimelineDirective\n   */\n  @Input()\n  public visTimelineGroups: DataGroupCollectionType;\n\n  /**\n   * The options that will be used with this timeline.\n   * Changes will be detected. If the reference changes then\n   * setOptions will be called on this timeline instance.\n   *\n   * @type {VisTimelineOptions}\n   * @memberOf VisTimelineDirective\n   */\n  @Input()\n  public visTimelineOptions: TimelineOptions;\n\n  /**\n   * This event will be raised when the timline is initialized.\n   * At this point of time the timeline is successfully registered\n   * with the VisNetworkService and you can register to events.\n   * The event data is the name of the timeline as a string.\n   *\n   * @type {EventEmitter<any>}\n   * @memberOf VisTimelineDirective\n   */\n  @Output()\n  public initialized: EventEmitter<any> = new EventEmitter<any>();\n\n  private visTimelineContainer: any;\n  private isInitialized: boolean = false;\n\n  /**\n   * Creates an instance of VisTimelineDirective.\n   *\n   * @param {ElementRef} elementRef The HTML element reference.\n   * @param {VisTimelineService} visTimelineService The VisTimelineService.\n   *\n   * @memberOf VisTimelineDirective\n   */\n  public constructor(private elementRef: ElementRef, private visTimelineService: VisTimelineService) {\n    this.visTimelineContainer = elementRef.nativeElement;\n  }\n\n  /**\n   * Create the timeline when at least visNetwork and visNetworkData\n   * are defined.\n   *\n   * @memberOf VisTimelineDirective\n   */\n  public ngOnInit(): void {\n    if (!this.isInitialized && this.visTimeline && this.visTimelineItems) {\n      this.createTimeline();\n    }\n  }\n\n  /**\n   * Update the timeline data, groups or options on reference changes to\n   * the visTimelineItems, visTimelineGroups or visTimelineOptions properties.\n   *\n   * @param {{[propName: string]: SimpleChange}} changes\n   *\n   * @memberOf VisTimelineDirective\n   */\n  public ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n    if (!this.isInitialized && this.visTimeline && this.visTimelineItems) {\n      this.createTimeline();\n    }\n\n    for (const propertyName in changes) {\n      if (changes.hasOwnProperty(propertyName)) {\n        const change = changes[propertyName];\n        if (!change.isFirstChange()) {\n          if (propertyName === 'visTimelineItems') {\n            this.visTimelineService.setItems(this.visTimeline, changes[propertyName].currentValue);\n          }\n          if (propertyName === 'visTimelineOptions') {\n            this.visTimelineService.setOptions(this.visTimeline, changes[propertyName].currentValue);\n          }\n          if (propertyName === 'visTimelineGroups') {\n            this.visTimelineService.setGroups(this.visTimeline, changes[propertyName].currentValue);\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Calls the destroy function for this timeline instance.\n   *\n   *\n   * @memberOf VisTimelineDirective\n   */\n  public ngOnDestroy(): void {\n    this.isInitialized = false;\n    this.visTimelineService.destroy(this.visTimeline);\n  }\n\n  private createTimeline(): void {\n    if (this.visTimelineGroups) {\n      this.visTimelineService.createWithItemsAndGroups(\n        this.visTimeline,\n        this.visTimelineContainer,\n        this.visTimelineItems,\n        this.visTimelineGroups,\n        this.visTimelineOptions,\n      );\n    } else {\n      this.visTimelineService.createWithItems(this.visTimeline, this.visTimelineContainer, this.visTimelineItems, this.visTimelineOptions);\n    }\n    this.isInitialized = true;\n    this.initialized.emit(this.visTimeline);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\n\nimport { DataSet } from 'vis-data';\nimport { Data,  Edge, Node, Options } from 'vis-network';\nimport { DataGroup, DataGroupCollectionType, DataItem, DataItemCollectionType, TimelineOptions } from 'vis-timeline';\n\nimport { VisNetworkDirective } from './components/network/vis-network.directive';\nimport { VisNetworkService } from './components/network/vis-network.service';\nimport { VisTimelineDirective } from './components/timeline/vis-timeline.directive';\nimport { VisTimelineService } from './components/timeline/vis-timeline.service';\n\nexport {\n  VisNetworkDirective,\n  VisTimelineDirective,\n  VisTimelineService,\n  VisNetworkService,\n  Data,\n  DataSet,\n  Edge,\n  Options,\n  DataItem,\n  DataGroup,\n  DataGroupCollectionType,\n  DataItemCollectionType,\n  Node,\n  TimelineOptions,\n};\n\n@NgModule({\n  imports: [CommonModule, VisNetworkDirective, VisTimelineDirective],\n  exports: [VisNetworkDirective, VisTimelineDirective],\n  providers: [VisNetworkService, VisTimelineService],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\n})\nexport class VisModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './ngx-vis';\n"],"names":["i1.VisNetworkService","i1.VisTimelineService"],"mappings":"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"}