function populateZoomOptions(zoomFolder, options, saveOptions, onChange) {
  setTooltip(
    zoomFolder.add(options.zoomOptions, 'controls').onChange((value) =>
      onChange('zoom', {
        ...saveOptions.zoom,
        controls: value,
      }),
    ),
    'Set to true to show zoom-centre, zoom-in, and zoom-out buttons.',
  );
  setTooltip(
    zoomFolder.add(options.zoomOptions, 'wheel').onChange((value) =>
      onChange('zoom', {
        ...saveOptions.zoom,
        wheel: value,
      }),
    ),
    'Set to true to allow the mouse wheel to zoom.',
  );
  setTooltip(
    zoomFolder
      .add(options.zoomOptions, 'startScale', 0.1, 4)
      .onChange((value) =>
        onChange('zoom', {
          ...saveOptions.zoom,
          startScale: value,
        }),
      ),
    'Initial magnification factor. For applications with multiple levels,' +
      ' startScale is often set to a higher value on the first level, then' +
      ' incrementally decreased as subsequent levels become more complex.',
  );
  setTooltip(
    zoomFolder
      .add(options.zoomOptions, 'maxScale', 1, 20)
      .onChange((value) =>
        onChange('zoom', {
          ...saveOptions.zoom,
          maxScale: value,
        }),
      )
      .step(1),
    'Maximum multiplication factor for how far one can zoom in.',
  );
  setTooltip(
    zoomFolder
      .add(options.zoomOptions, 'minScale', 0.1, 1)
      .onChange((value) =>
        onChange('zoom', {
          ...saveOptions.zoom,
          minScale: value,
        }),
      )
      .step(0.05),
    'Minimum multiplication factor for how far one can zoom out.',
  );
}
Populate zoom options.
@param {dat.GUI} zoomFolder The dat.GUI zoom options folder.
@param {Blockly.Options} options Blockly options.
@param {Blockly.BlocklyOptions} saveOptions Saved Blockly options.
@param {function(string, *):void} onChange On Change method.