import { d3Event, HTMLWidget, zoom as d3Zoom } from "@hpcc-js/common";
export class LiteSVGZoomWidget extends HTMLWidget {
protected _svgElement: any;
protected _svgDefs: any;
protected _zoomElement: any;
protected _zoom = d3Zoom();
protected _zoomScale = 1;
protected _zoomTranslate = [0, 0];
constructor() {
super();
this._tag = "div";
this._drawStartPos = "origin";
}
resize(size?) {
const retVal = super.resize(size);
if (this._svgElement) {
this._svgElement
.style("width", this._size.width + "px")
.style("height", this._size.height + "px")
;
}
return retVal;
}
zoomed(transform) {
this._zoomScale = transform.k;
this._zoomTranslate = [transform.x, transform.y];
this._zoomElement.attr("transform", transform);
}
enter(domNode, element) {
super.enter(domNode, element);
element
.style("position", "relative")
;
this._svgElement = element.append("svg");
this._svgDefs = this._svgElement.append("defs");
this._zoomElement = this._svgElement.append("g");
this.resize();
this._zoom.on("zoom", () => this.zoomed(d3Event().transform));
this._svgElement.call(this._zoom);
}
update(domNode, element) {
super.update(domNode, element);
}
exit(domNode, element) {
super.exit(domNode, element);
}
}
LiteSVGZoomWidget.prototype._class += " graph_SVGZoomLiteWidget";