import {
  Toggle_default
} from "./chunk-NNBJMTCH.js";
import "./chunk-VCBXDRBT.js";
import {
  Vector_default as Vector_default2
} from "./chunk-PD2E5XZ4.js";
import "./chunk-S3QBQTEW.js";
import "./chunk-V7WRBSQ6.js";
import "./chunk-W7BDJOQY.js";
import {
  Circle_default,
  LineString_default
} from "./chunk-7JXPN73Q.js";
import {
  Feature_default
} from "./chunk-E53S5GN6.js";
import {
  Vector_default
} from "./chunk-T3TT2KJN.js";
import "./chunk-HM3IY3H4.js";
import "./chunk-JFXZSSOM.js";
import "./chunk-ZUI5NXIU.js";
import "./chunk-I4Q72WOW.js";
import "./chunk-RTVPCGIJ.js";
import {
  Interaction_default
} from "./chunk-MSWSBYBR.js";
import "./chunk-QCJTGAWF.js";
import "./chunk-CAVOO5JW.js";
import "./chunk-VRTURNK3.js";
import "./chunk-2C73OZ6M.js";
import "./chunk-M5TTSD4C.js";
import "./chunk-ZCRXKB7J.js";
import "./chunk-RW3V7S4F.js";
import {
  Circle_default as Circle_default2,
  Fill_default,
  RegularShape_default,
  Stroke_default,
  Style_default
} from "./chunk-PAB2HIXK.js";
import "./chunk-I6K7MRGV.js";
import "./chunk-PGWX4545.js";
import "./chunk-AYBYZSAV.js";
import "./chunk-YLJGUH5Z.js";
import {
  Point_default,
  Polygon_default,
  circular,
  fromCircle
} from "./chunk-AZGMK675.js";
import "./chunk-BHVDQB66.js";
import "./chunk-6EWLK2BW.js";
import "./chunk-6Y7C6NBJ.js";
import "./chunk-5D2XPBR2.js";
import "./chunk-SHUBVYN4.js";
import "./chunk-FM44FOIC.js";
import "./chunk-LMC3RO5P.js";
import "./chunk-X52LGBOS.js";
import "./chunk-QFCIXVZ3.js";
import {
  get,
  getTransformFromProjections,
  identityTransform,
  transform
} from "./chunk-A3RXLHYB.js";
import {
  getDistance
} from "./chunk-ZLPTRF2L.js";
import {
  toRadians
} from "./chunk-54BTDBAD.js";
import "./chunk-UPTVWZ45.js";
import "./chunk-5XHD7RSF.js";
import {
  Object_default
} from "./chunk-Q5ZULJHM.js";
import {
  Event_default
} from "./chunk-NGFXCWUF.js";
import "./chunk-K25ZO44T.js";
import {
  containsCoordinate,
  containsExtent
} from "./chunk-SRXHWJOY.js";
import "./chunk-5RHQVMYD.js";
import "./chunk-DC5AMYBS.js";

// node_modules/ol/Geolocation.js
var Property = {
  ACCURACY: "accuracy",
  ACCURACY_GEOMETRY: "accuracyGeometry",
  ALTITUDE: "altitude",
  ALTITUDE_ACCURACY: "altitudeAccuracy",
  HEADING: "heading",
  POSITION: "position",
  PROJECTION: "projection",
  SPEED: "speed",
  TRACKING: "tracking",
  TRACKING_OPTIONS: "trackingOptions"
};
var GeolocationErrorType = {
  /**
   * Triggered when a `GeolocationPositionError` occurs.
   * @event module:ol/Geolocation.GeolocationError#error
   * @api
   */
  ERROR: "error"
};
var GeolocationError = class extends Event_default {
  /**
   * @param {GeolocationPositionError} error error object.
   */
  constructor(error) {
    super(GeolocationErrorType.ERROR);
    this.code = error.code;
    this.message = error.message;
  }
};
var Geolocation = class extends Object_default {
  /**
   * @param {Options} [options] Options.
   */
  constructor(options) {
    super();
    this.on;
    this.once;
    this.un;
    options = options || {};
    this.position_ = null;
    this.transform_ = identityTransform;
    this.watchId_ = void 0;
    this.addChangeListener(Property.PROJECTION, this.handleProjectionChanged_);
    this.addChangeListener(Property.TRACKING, this.handleTrackingChanged_);
    if (options.projection !== void 0) {
      this.setProjection(options.projection);
    }
    if (options.trackingOptions !== void 0) {
      this.setTrackingOptions(options.trackingOptions);
    }
    this.setTracking(options.tracking !== void 0 ? options.tracking : false);
  }
  /**
   * Clean up.
   * @override
   */
  disposeInternal() {
    this.setTracking(false);
    super.disposeInternal();
  }
  /**
   * @private
   */
  handleProjectionChanged_() {
    const projection = this.getProjection();
    if (projection) {
      this.transform_ = getTransformFromProjections(
        get("EPSG:4326"),
        projection
      );
      if (this.position_) {
        this.set(Property.POSITION, this.transform_(this.position_));
      }
    }
  }
  /**
   * @private
   */
  handleTrackingChanged_() {
    if ("geolocation" in navigator) {
      const tracking = this.getTracking();
      if (tracking && this.watchId_ === void 0) {
        this.watchId_ = navigator.geolocation.watchPosition(
          this.positionChange_.bind(this),
          this.positionError_.bind(this),
          this.getTrackingOptions()
        );
      } else if (!tracking && this.watchId_ !== void 0) {
        navigator.geolocation.clearWatch(this.watchId_);
        this.watchId_ = void 0;
      }
    }
  }
  /**
   * @private
   * @param {GeolocationPosition} position position event.
   */
  positionChange_(position) {
    const coords = position.coords;
    this.set(Property.ACCURACY, coords.accuracy);
    this.set(
      Property.ALTITUDE,
      coords.altitude === null ? void 0 : coords.altitude
    );
    this.set(
      Property.ALTITUDE_ACCURACY,
      coords.altitudeAccuracy === null ? void 0 : coords.altitudeAccuracy
    );
    this.set(
      Property.HEADING,
      coords.heading === null ? void 0 : toRadians(coords.heading)
    );
    if (!this.position_) {
      this.position_ = [coords.longitude, coords.latitude];
    } else {
      this.position_[0] = coords.longitude;
      this.position_[1] = coords.latitude;
    }
    const projectedPosition = this.transform_(this.position_);
    this.set(Property.POSITION, projectedPosition.slice());
    this.set(Property.SPEED, coords.speed === null ? void 0 : coords.speed);
    const geometry = circular(this.position_, coords.accuracy);
    geometry.applyTransform(this.transform_);
    this.set(Property.ACCURACY_GEOMETRY, geometry);
    this.changed();
  }
  /**
   * @private
   * @param {GeolocationPositionError} error error object.
   */
  positionError_(error) {
    this.dispatchEvent(new GeolocationError(error));
  }
  /**
   * Get the accuracy of the position in meters.
   * @return {number|undefined} The accuracy of the position measurement in
   *     meters.
   * @observable
   * @api
   */
  getAccuracy() {
    return (
      /** @type {number|undefined} */
      this.get(Property.ACCURACY)
    );
  }
  /**
   * Get a geometry of the position accuracy.
   * @return {?import("./geom/Polygon.js").default} A geometry of the position accuracy.
   * @observable
   * @api
   */
  getAccuracyGeometry() {
    return (
      /** @type {?import("./geom/Polygon.js").default} */
      this.get(Property.ACCURACY_GEOMETRY) || null
    );
  }
  /**
   * Get the altitude associated with the position.
   * @return {number|undefined} The altitude of the position in meters above mean
   *     sea level.
   * @observable
   * @api
   */
  getAltitude() {
    return (
      /** @type {number|undefined} */
      this.get(Property.ALTITUDE)
    );
  }
  /**
   * Get the altitude accuracy of the position.
   * @return {number|undefined} The accuracy of the altitude measurement in
   *     meters.
   * @observable
   * @api
   */
  getAltitudeAccuracy() {
    return (
      /** @type {number|undefined} */
      this.get(Property.ALTITUDE_ACCURACY)
    );
  }
  /**
   * Get the heading as radians clockwise from North.
   * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`
   * is set to `true` in the tracking options.
   * @return {number|undefined} The heading of the device in radians from north.
   * @observable
   * @api
   */
  getHeading() {
    return (
      /** @type {number|undefined} */
      this.get(Property.HEADING)
    );
  }
  /**
   * Get the position of the device.
   * @return {import("./coordinate.js").Coordinate|undefined} The current position of the device reported
   *     in the current projection.
   * @observable
   * @api
   */
  getPosition() {
    return (
      /** @type {import("./coordinate.js").Coordinate|undefined} */
      this.get(Property.POSITION)
    );
  }
  /**
   * Get the projection associated with the position.
   * @return {import("./proj/Projection.js").default|undefined} The projection the position is
   *     reported in.
   * @observable
   * @api
   */
  getProjection() {
    return (
      /** @type {import("./proj/Projection.js").default|undefined} */
      this.get(Property.PROJECTION)
    );
  }
  /**
   * Get the speed in meters per second.
   * @return {number|undefined} The instantaneous speed of the device in meters
   *     per second.
   * @observable
   * @api
   */
  getSpeed() {
    return (
      /** @type {number|undefined} */
      this.get(Property.SPEED)
    );
  }
  /**
   * Determine if the device location is being tracked.
   * @return {boolean} The device location is being tracked.
   * @observable
   * @api
   */
  getTracking() {
    return (
      /** @type {boolean} */
      this.get(Property.TRACKING)
    );
  }
  /**
   * Get the tracking options.
   * See https://www.w3.org/TR/geolocation-API/#position-options.
   * @return {PositionOptions|undefined} PositionOptions as defined by
   *     the [HTML5 Geolocation spec
   *     ](https://www.w3.org/TR/geolocation-API/#position_options_interface).
   * @observable
   * @api
   */
  getTrackingOptions() {
    return (
      /** @type {PositionOptions|undefined} */
      this.get(Property.TRACKING_OPTIONS)
    );
  }
  /**
   * Set the projection to use for transforming the coordinates.
   * @param {import("./proj.js").ProjectionLike} projection The projection the position is
   *     reported in.
   * @observable
   * @api
   */
  setProjection(projection) {
    this.set(Property.PROJECTION, get(projection));
  }
  /**
   * Enable or disable tracking.
   * @param {boolean} tracking Enable tracking.
   * @observable
   * @api
   */
  setTracking(tracking) {
    this.set(Property.TRACKING, tracking);
  }
  /**
   * Set the tracking options.
   * See http://www.w3.org/TR/geolocation-API/#position-options.
   * @param {PositionOptions} options PositionOptions as defined by the
   *     [HTML5 Geolocation spec
   *     ](http://www.w3.org/TR/geolocation-API/#position_options_interface).
   * @observable
   * @api
   */
  setTrackingOptions(options) {
    this.set(Property.TRACKING_OPTIONS, options);
  }
};
var Geolocation_default = Geolocation;

// node_modules/ol-ext/interaction/GeolocationDraw.js
var ol_interaction_GeolocationDraw = class olinteractionGeolocationDraw extends Interaction_default {
  constructor(options) {
    options = options || {};
    super({
      handleEvent: function() {
        return !this.get("followTrack") || this.get("followTrack") == "auto";
      }
    });
    this.geolocation = new Geolocation_default({
      projection: "EPSG:4326",
      trackingOptions: {
        maximumAge: 1e4,
        enableHighAccuracy: true,
        timeout: 6e5
      }
    });
    this.geolocation.on("change", this.draw_.bind(this));
    this.path_ = [];
    this.lastPosition_ = false;
    var white = [255, 255, 255, 1];
    var blue = [0, 153, 255, 1];
    var width = 3;
    var circle = new Circle_default2({
      radius: width * 2,
      fill: new Fill_default({ color: blue }),
      stroke: new Stroke_default({ color: white, width: width / 2 })
    });
    var style = [
      new Style_default({
        stroke: new Stroke_default({ color: white, width: width + 2 })
      }),
      new Style_default({
        stroke: new Stroke_default({ color: blue, width }),
        fill: new Fill_default({
          color: [255, 255, 255, 0.5]
        })
      })
    ];
    var triangle = new RegularShape_default({
      radius: width * 3.5,
      points: 3,
      rotation: 0,
      fill: new Fill_default({ color: blue }),
      stroke: new Stroke_default({ color: white, width: width / 2 })
    });
    var c = triangle.getImage();
    var ctx = c.getContext("2d");
    var c2 = document.createElement("canvas");
    c2.width = c2.height = c.width;
    c2.getContext("2d").drawImage(c, 0, 0);
    ctx.clearRect(0, 0, c.width, c.height);
    ctx.drawImage(c2, 0, 0, c.width, c.height, width, 0, c.width - 2 * width, c.height);
    var defaultStyle = function(f) {
      if (f.get("heading") === void 0) {
        style[1].setImage(circle);
      } else {
        style[1].setImage(triangle);
        triangle.setRotation(f.get("heading") || 0);
      }
      return style;
    };
    this.locStyle = {
      error: new Style_default({ fill: new Fill_default({ color: [255, 0, 0, 0.2] }) }),
      warn: new Style_default({ fill: new Fill_default({ color: [255, 192, 0, 0.2] }) }),
      ok: new Style_default({ fill: new Fill_default({ color: [0, 255, 0, 0.2] }) })
    };
    this.overlayLayer_ = new Vector_default({
      source: new Vector_default2(),
      name: "GeolocationDraw overlay",
      style: options.style || defaultStyle
    });
    this.sketch_ = [new Feature_default(), new Feature_default(), new Feature_default()];
    this.overlayLayer_.getSource().addFeatures(this.sketch_);
    this.features_ = options.features;
    this.source_ = options.source;
    this.condition_ = options.condition || function(loc) {
      return loc.getAccuracy() < this.get("minAccuracy");
    };
    this.set("type", options.type || "LineString");
    this.set("attributes", options.attributes || {});
    this.set("minAccuracy", options.minAccuracy || 20);
    this.set("tolerance", options.tolerance || 5);
    this.set("zoom", options.zoom);
    this.set("minZoom", options.minZoom);
    this.setFollowTrack(options.followTrack === void 0 ? true : options.followTrack);
    this.setActive(false);
  }
  /** Simplify 3D geometry
   * @param {ol.geom.Geometry} geo
   * @param {number} tolerance
   */
  simplify3D(geo, tolerance) {
    var geom = geo.getCoordinates();
    var proj = this.getMap().getView().getProjection();
    if (this.get("type") === "Polygon") {
      geom = geom[0];
    }
    var simply = [geom[0]];
    var pi, p = transform(geom[0], proj, "EPSG:4326");
    for (var i = 1; i < geom.length; i++) {
      pi = transform(geom[i], proj, "EPSG:4326");
      var d = getDistance(p, pi);
      if (d > tolerance) {
        simply.push(geom[i]);
        p = pi;
      }
    }
    if (simply[simply.length - 1] !== geom[geom.length - 1]) {
      simply.push(geom[geom.length - 1]);
    }
    if (this.get("type") === "Polygon") {
      geo = new Polygon_default([simply], "XYZM");
    } else {
      geo = new LineString_default(simply, "XYZM");
    }
    return geo;
  }
  /**
   * Remove the interaction from its current map, if any,  and attach it to a new
   * map, if any. Pass `null` to just remove the interaction from the current map.
   * @param {ol.Map} map Map.
   * @api stable
   */
  setMap(map) {
    if (this.getMap()) this.getMap().removeLayer(this.overlayLayer_);
    super.setMap(map);
    this.overlayLayer_.setMap(map);
    if (map) this.geolocation.setProjection(map.getView().getProjection());
  }
  /** Activate or deactivate the interaction.
   * @param {boolean} active
   */
  setActive(active) {
    if (active === this.getActive()) return;
    super.setActive(active);
    if (this.getMap()) {
      this.geolocation.setTracking(active);
      try {
        this.getMap().renderSync();
      } catch (e) {
      }
    }
    if (!this.overlayLayer_) return;
    this.overlayLayer_.setVisible(active);
    this.pause(!active);
    if (active) {
      this.reset();
      this.dispatchEvent({ type: "drawstart", feature: this.sketch_[1] });
    } else {
      var f = this.sketch_[1].clone();
      if (f.getGeometry()) {
        if (this.features_)
          this.features_.push(f);
        if (this.source_)
          this.source_.addFeature(f);
      }
      this.dispatchEvent({ type: "drawend", feature: f });
    }
  }
  /** Simulate a track and override current geolocation
   * @param {Array<ol.coordinate>|boolean} track a list of point or false to stop
   * @param {*} options
   *  @param {number} delay delay in ms, default 1000 (1s)
   *  @param {number} accuracy gps accuracy, default 10
   *  @param {boolean} repeat repeat track, default true
   */
  simulate(track, options) {
    if (this._track) {
      clearTimeout(this._track.timeout);
    }
    if (!track) {
      this._track = false;
      return;
    }
    options = options || {};
    var delay = options.delay || 1e3;
    function handleTrack() {
      if (this._track.pos >= this._track.track.length) {
        this._track = false;
        return;
      }
      var coord = this._track.track[this._track.pos];
      coord[2] = coord[3] || 0;
      coord[3] = (/* @__PURE__ */ new Date()).getTime();
      this._track.pos++;
      if (options.repeat !== false) {
        this._track.pos = this._track.pos % this._track.track.length;
      }
      if (this.getActive())
        this.draw_(true, coord, options.accuracy);
      this._track.timeout = setTimeout(handleTrack.bind(this), delay);
    }
    this._track = {
      track,
      pos: 0,
      timeout: setTimeout(handleTrack.bind(this), 0)
    };
  }
  /** Is simulation on ?
   * @returns {boolean}
   */
  simulating() {
    return !!this._track;
  }
  /** Reset drawing
  */
  reset() {
    this.sketch_[1].setGeometry();
    this.path_ = [];
    this.lastPosition_ = false;
  }
  /** Start tracking = setActive(true)
   */
  start() {
    this.setActive(true);
  }
  /** Stop tracking = setActive(false)
   */
  stop() {
    this.setActive(false);
  }
  /** Pause drawing
   * @param {boolean} b
   */
  pause(b) {
    this.pause_ = b !== false;
  }
  /** Is paused
   * @return {boolean} b
   */
  isPaused() {
    return this.pause_;
  }
  /** Enable following the track on the map
  * @param {boolean|auto|position|visible} follow,
  *	false: don't follow,
  *	true: follow (position+zoom),
  *	'position': follow only position,
  *	'auto': start following until user move the map,
  *	'visible': center when position gets out of the visible extent
  */
  setFollowTrack(follow) {
    this.set("followTrack", follow);
    var map = this.getMap();
    if (this.getActive() && map) {
      var zoom;
      if (follow !== "position") {
        if (this.get("minZoom")) {
          zoom = Math.max(this.get("minZoom"), map.getView().getZoom());
        } else {
          zoom = this.get("zoom");
        }
      }
      if (follow !== false && !this.lastPosition_) {
        var pos = this.path_[this.path_.length - 1];
        if (pos) {
          map.getView().animate({
            center: pos,
            zoom
          });
        }
      } else if (follow === "auto" && this.lastPosition_) {
        map.getView().animate({
          center: this.lastPosition_,
          zoom
        });
      }
    }
    this.lastPosition_ = false;
    this.dispatchEvent({ type: "follow", following: follow !== false });
  }
  /** Add a new point to the current path
   * @private
   */
  draw_(simulate, coord, accuracy) {
    var map = this.getMap();
    if (!map)
      return;
    var accu, pos, p, loc, heading;
    if (this._track) {
      if (simulate !== true)
        return;
      pos = coord;
      accu = accuracy || 10;
      if (this.path_ && this.path_.length) {
        var pt = this.path_[this.path_.length - 1];
        heading = Math.atan2(coord[0] - pt[0], coord[1] - pt[1]);
      }
      var circle = new Circle_default(pos, map.getView().getResolution() * accu);
      p = fromCircle(circle);
    } else {
      loc = this.geolocation;
      accu = loc.getAccuracy();
      pos = this.getPosition(loc);
      p = loc.getAccuracyGeometry();
      heading = loc.getHeading();
    }
    switch (this.get("followTrack")) {
      // Follow center + zoom
      case true: {
        if (this.get("followTrack") == true) {
          if (this.get("minZoom")) {
            if (this.get("minZoom") > map.getView().getZoom()) {
              map.getView().setZoom(this.get("minZoom"));
            }
          } else {
            map.getView().setZoom(this.get("zoom") || 16);
          }
          if (!containsExtent(map.getView().calculateExtent(map.getSize()), p.getExtent())) {
            map.getView().fit(p.getExtent());
          }
        }
        map.getView().setCenter(pos);
        break;
      }
      // Follow  position 
      case "position": {
        map.getView().setCenter(pos);
        break;
      }
      // Keep on following 
      case "auto": {
        if (this.lastPosition_) {
          var center = map.getView().getCenter();
          if (center[0] != this.lastPosition_[0] || center[1] != this.lastPosition_[1]) {
            this.setFollowTrack(false);
          } else {
            map.getView().setCenter(pos);
            this.lastPosition_ = pos;
          }
        } else {
          map.getView().setCenter(pos);
          if (this.get("minZoom")) {
            if (this.get("minZoom") > map.getView().getZoom()) {
              map.getView().setZoom(this.get("minZoom"));
            }
          } else if (this.get("zoom")) {
            map.getView().setZoom(this.get("zoom"));
          }
          this.lastPosition_ = pos;
        }
        break;
      }
      // Force to stay on the map
      case "visible": {
        if (!containsCoordinate(map.getView().calculateExtent(map.getSize()), pos)) {
          map.getView().setCenter(pos);
        }
        break;
      }
      // Don't follow
      default:
        break;
    }
    var f = this.sketch_[0];
    f.setGeometry(p);
    if (accu < this.get("minAccuracy") / 2)
      f.setStyle(this.locStyle.ok);
    else if (accu < this.get("minAccuracy"))
      f.setStyle(this.locStyle.warn);
    else
      f.setStyle(this.locStyle.error);
    var geo;
    if (this.pause_) {
      this.lastPosition_ = pos;
    }
    if (!this.pause_ && (!loc || this.condition_.call(this, loc))) {
      f = this.sketch_[1];
      this.path_.push(pos);
      switch (this.get("type")) {
        case "Point":
          this.path_ = [pos];
          f.setGeometry(new Point_default(pos, "XYZM"));
          var attr = this.get("attributes");
          if (attr.heading)
            f.set("heading", loc.getHeading());
          if (attr.accuracy)
            f.set("accuracy", loc.getAccuracy());
          if (attr.altitudeAccuracy)
            f.set("altitudeAccuracy", loc.getAltitudeAccuracy());
          if (attr.speed)
            f.set("speed", loc.getSpeed());
          break;
        case "LineString":
          if (this.path_.length > 1) {
            geo = new LineString_default(this.path_, "XYZM");
            if (this.get("tolerance"))
              geo = this.simplify3D(geo, this.get("tolerance"));
            f.setGeometry(geo);
          } else {
            f.setGeometry();
          }
          break;
        case "Polygon":
          if (this.path_.length > 2) {
            geo = new Polygon_default([this.path_], "XYZM");
            if (this.get("tolerance"))
              geo = this.simplify3D(geo, this.get("tolerance"));
            f.setGeometry(geo);
          } else
            f.setGeometry();
          break;
      }
      this.dispatchEvent({ type: "drawing", feature: this.sketch_[1], geolocation: loc });
    }
    this.sketch_[2].setGeometry(new Point_default(pos));
    this.sketch_[2].set("heading", heading);
    this.dispatchEvent({ type: "tracking", feature: this.sketch_[1], geolocation: loc });
  }
  /** Get a position according to the geolocation
   * @param {Geolocation} loc
   * @returns {Array<any>} an array of measure X,Y,Z,T
   * @api
   */
  getPosition(loc) {
    var pos = loc.getPosition();
    pos.push(Math.round((loc.getAltitude() || 0) * 100) / 100);
    pos.push(Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3));
    return pos;
  }
};
var GeolocationDraw_default = ol_interaction_GeolocationDraw;

// node_modules/ol-ext/control/GeolocationButton.js
var ol_control_GeolocationButton = class olcontrolGeolocationButton extends Toggle_default {
  constructor(options) {
    options = options || {};
    options.followTrack = options.followTrack || "auto";
    options.zoom = options.zoom || 16;
    var interaction = new GeolocationDraw_default(options);
    super({
      className: options.className = ((options.className || "") + " ol-geobt").trim(),
      interaction,
      title: options.title || "Geolocation",
      onToggle: function() {
        interaction.pause(true);
        interaction.setFollowTrack(options.followTrack || "auto");
      }
    });
    this.setActive(false);
    interaction.on("tracking", (function(e) {
      this.dispatchEvent({ type: "position", coordinate: e.geolocation.getPosition() });
    }).bind(this));
    var tout;
    interaction.on("change:active", (function() {
      this.dispatchEvent({ type: "position" });
      if (tout) {
        clearTimeout(tout);
        tout = null;
      }
      if (interaction.getActive()) {
        tout = setTimeout((function() {
          interaction.setActive(false);
          tout = null;
        }).bind(this), options.delay || 3e3);
      }
    }).bind(this));
  }
};
var GeolocationButton_default = ol_control_GeolocationButton;
export {
  GeolocationButton_default as default
};
//# sourceMappingURL=ol-ext_control_GeolocationButton.js.map
