zoomChanged (win, bbox, autoCenter) {
    const scrbar = 15
    const zInfo = this.svgCanvas.setBBoxZoom(
      bbox,
      parseFloat(
        getComputedStyle(this.workarea, null).width.replace('px', '')
      ) - scrbar,
      parseFloat(
        getComputedStyle(this.workarea, null).height.replace('px', '')
      ) - scrbar
    )
    if (!zInfo) {
      return
    }
    const zoomlevel = zInfo.zoom
    const bb = zInfo.bbox

    if (zoomlevel < 0.001) {
      this.changeZoom(0.1)
      return
    }

    $id('zoom').value = (this.svgCanvas.getZoom() * 100).toFixed(1)

    if (autoCenter) {
      this.updateCanvas()
    } else {
      this.updateCanvas(false, {
        x: bb.x * zoomlevel + (bb.width * zoomlevel) / 2,
        y: bb.y * zoomlevel + (bb.height * zoomlevel) / 2
      })
    }

    if (this.svgCanvas.getMode() === 'zoom' && bb.width) {
      // Go to select if a zoom box was drawn
      this.leftPanel.clickSelect()
    }

    this.zoomDone()

    this.svgCanvas.runExtensions(
      'zoomChanged',
      /** @type {module:svgcanvas.SvgCanvas#event:ext_zoomChanged} */ this.svgCanvas.getZoom()
    )
  }
@function module:svgcanvas.SvgCanvas#zoomChanged
@param {external:Window} win
@param {module:svgcanvas.SvgCanvas#event:zoomed} bbox
@param {boolean} autoCenter
@listens module:svgcanvas.SvgCanvas#event:zoomed
@fires module:svgcanvas.SvgCanvas#event:ext_zoomChanged
@returns {void}