diff --git a/config/jsdoc/info/publish.js b/config/jsdoc/info/publish.js
index 9e42a6a6d3..e1d514265c 100644
--- a/config/jsdoc/info/publish.js
+++ b/config/jsdoc/info/publish.js
@@ -2,8 +2,8 @@
* @fileoverview Generates JSON output based on exportable symbols (those with
* an api tag) and boolean defines (with a define tag and a default value).
*/
-var assert = require('assert');
-var path = require('path');
+const assert = require('assert');
+const path = require('path');
/**
@@ -15,7 +15,7 @@ var path = require('path');
exports.publish = function(data, opts) {
function getTypes(data) {
- var types = [];
+ const types = [];
data.forEach(function(name) {
types.push(name.replace(/^function$/, 'Function'));
});
@@ -24,43 +24,43 @@ exports.publish = function(data, opts) {
// get all doclets with the "api" property or define (excluding events) or
// with olx namespace
- var classes = {};
- var docs = data(
- [
- {define: {isObject: true}},
- function() {
- if (this.kind == 'class') {
- if (!('extends' in this) || typeof this.api == 'boolean') {
- classes[this.longname] = this;
- return true;
- }
+ const classes = {};
+ const docs = data(
+ [
+ {define: {isObject: true}},
+ function() {
+ if (this.kind == 'class') {
+ if (!('extends' in this) || typeof this.api == 'boolean') {
+ classes[this.longname] = this;
+ return true;
}
- return (typeof this.api == 'boolean' ||
- this.meta && (/[\\\/]externs$/).test(this.meta.path));
}
- ],
- {kind: {'!is': 'file'}},
- {kind: {'!is': 'event'}}).get();
+ return (typeof this.api == 'boolean' ||
+ this.meta && (/[\\\/]externs$/).test(this.meta.path));
+ }
+ ],
+ {kind: {'!is': 'file'}},
+ {kind: {'!is': 'event'}}).get();
// get symbols data, filter out those that are members of private classes
- var symbols = [];
- var defines = [];
- var typedefs = [];
- var externs = [];
- var base = [];
- var augments = {};
- var symbolsByName = {};
+ const symbols = [];
+ const defines = [];
+ const typedefs = [];
+ const externs = [];
+ let base = [];
+ const augments = {};
+ const symbolsByName = {};
docs.filter(function(doc) {
- var include = true;
- var constructor = doc.memberof;
+ let include = true;
+ const constructor = doc.memberof;
if (constructor && constructor.substr(-1) === '_' && constructor.indexOf('module:') === -1) {
assert.strictEqual(doc.inherited, true,
- 'Unexpected export on private class: ' + doc.longname);
+ 'Unexpected export on private class: ' + doc.longname);
include = false;
}
return include;
}).forEach(function(doc) {
- var isExterns = (/[\\\/]externs$/).test(doc.meta.path);
+ const isExterns = (/[\\\/]externs$/).test(doc.meta.path);
if (isExterns && doc.longname.indexOf('olx.') === 0) {
if (doc.kind == 'typedef') {
typedefs.push({
@@ -68,12 +68,15 @@ exports.publish = function(data, opts) {
types: ['{}']
});
} else {
- var typedef = typedefs[typedefs.length - 1];
- var type = typedef.types[0];
+ const typedef = typedefs[typedefs.length - 1];
+ if (!typedef) {
+ throw new Error(`Expected to see a typedef before ${doc.longname} at ${doc.meta.filename}:${doc.meta.lineno}`);
+ }
+ const type = typedef.types[0];
typedef.types[0] = type
- .replace(/\}$/, ', ' + doc.longname.split('#')[1] +
+ .replace(/\}$/, ', ' + doc.longname.split('#')[1] +
': (' + getTypes(doc.type.names).join('|') + ')}')
- .replace('{, ', '{');
+ .replace('{, ', '{');
}
} else if (doc.define) {
defines.push({
@@ -88,7 +91,7 @@ exports.publish = function(data, opts) {
types: getTypes(doc.type.names)
});
} else {
- var symbol = {
+ const symbol = {
name: doc.longname,
kind: doc.kind,
description: doc.classdesc || doc.description,
@@ -104,9 +107,9 @@ exports.publish = function(data, opts) {
symbol.types = getTypes(doc.type.names);
}
if (doc.params) {
- var params = [];
+ const params = [];
doc.params.forEach(function(param) {
- var paramInfo = {
+ const paramInfo = {
name: param.name
};
params.push(paramInfo);
@@ -141,10 +144,10 @@ exports.publish = function(data, opts) {
});
}
- var target = isExterns ? externs : (doc.api ? symbols : base);
- var existingSymbol = symbolsByName[symbol.name];
+ const target = isExterns ? externs : (doc.api ? symbols : base);
+ const existingSymbol = symbolsByName[symbol.name];
if (existingSymbol) {
- var idx = target.indexOf(existingSymbol);
+ const idx = target.indexOf(existingSymbol);
target.splice(idx, 1);
}
target.push(symbol);
@@ -168,13 +171,13 @@ exports.publish = function(data, opts) {
return new Promise(function(resolve, reject) {
process.stdout.write(
- JSON.stringify({
- symbols: symbols,
- defines: defines,
- typedefs: typedefs,
- externs: externs,
- base: base
- }, null, 2));
+ JSON.stringify({
+ symbols: symbols,
+ defines: defines,
+ typedefs: typedefs,
+ externs: externs,
+ base: base
+ }, null, 2));
});
};
diff --git a/externs/olx.js b/externs/olx.js
index 0d7370bdb1..dfb5834b12 100644
--- a/externs/olx.js
+++ b/externs/olx.js
@@ -2,868 +2,7 @@
/**
* @type {Object}
*/
-var olx;
-
-
-/**
- * Object literal with options for the {@link ol.Map#forEachFeatureAtPixel} and
- * {@link ol.Map#hasFeatureAtPixel} methods.
- * @typedef {{layerFilter: ((function(ol.layer.Layer): boolean)|undefined),
- * hitTolerance: (number|undefined)}}
- */
-olx.AtPixelOptions;
-
-
-/**
- * Layer filter function. The filter function will receive one argument, the
- * {@link ol.layer.Layer layer-candidate} and it should return a boolean value.
- * Only layers which are visible and for which this function returns `true`
- * will be tested for features. By default, all visible layers will be tested.
- * @type {((function(ol.layer.Layer): boolean)|undefined)}
- * @api
- */
-olx.AtPixelOptions.prototype.layerFilter;
-
-
-/**
- * Hit-detection tolerance in pixels. Pixels inside the radius around the given position
- * will be checked for features. This only works for the canvas renderer and
- * not for WebGL. Default is `0`.
- * @type {number|undefined}
- * @api
- */
-olx.AtPixelOptions.prototype.hitTolerance;
-
-
-/**
- * Object literal with config options for the projection.
- * @typedef {{code: string,
- * units: (ol.proj.Units|string|undefined),
- * extent: (ol.Extent|undefined),
- * axisOrientation: (string|undefined),
- * global: (boolean|undefined),
- * metersPerUnit: (number|undefined),
- * worldExtent: (ol.Extent|undefined),
- * getPointResolution: (function(number, ol.Coordinate):number|undefined) }}
- */
-olx.ProjectionOptions;
-
-
-/**
- * The SRS identifier code, e.g. `EPSG:4326`.
- * @type {string}
- * @api
- */
-olx.ProjectionOptions.prototype.code;
-
-
-/**
- * Units. Required unless a proj4 projection is defined for `code`.
- * @type {ol.proj.Units|string|undefined}
- * @api
- */
-olx.ProjectionOptions.prototype.units;
-
-
-/**
- * The validity extent for the SRS.
- * @type {ol.Extent|undefined}
- * @api
- */
-olx.ProjectionOptions.prototype.extent;
-
-
-/**
- * The axis orientation as specified in Proj4. The default is `enu`.
- * @type {string|undefined}
- * @api
- */
-olx.ProjectionOptions.prototype.axisOrientation;
-
-
-/**
- * Whether the projection is valid for the whole globe. Default is `false`.
- * @type {boolean|undefined}
- * @api
- */
-olx.ProjectionOptions.prototype.global;
-
-
-/**
- * The meters per unit for the SRS. If not provided, the `units` are used to get
- * the meters per unit from the {@link ol.proj.METERS_PER_UNIT} lookup table.
- * @type {number|undefined}
- * @api
- */
-olx.ProjectionOptions.prototype.metersPerUnit;
-
-
-/**
- * The world extent for the SRS.
- * @type {ol.Extent|undefined}
- * @api
- */
-olx.ProjectionOptions.prototype.worldExtent;
-
-
-/**
- * Function to determine resolution at a point. The function is called with a
- * `{number}` view resolution and an `{ol.Coordinate}` as arguments, and returns
- * the `{number}` resolution at the passed coordinate. If this is `undefined`,
- * the default {@link ol.proj#getPointResolution} function will be used.
- * @type {(function(number, ol.Coordinate):number|undefined)}
- * @api
- */
-olx.ProjectionOptions.prototype.getPointResolution;
-
-
-/**
- * @typedef {{
- * center: (ol.Coordinate|undefined),
- * zoom: (number|undefined),
- * resolution: (number|undefined),
- * rotation: (number|undefined),
- * anchor: (ol.Coordinate|undefined),
- * duration: (number|undefined),
- * easing: (undefined|function(number):number)
- * }}
- */
-olx.AnimationOptions;
-
-
-/**
- * The center of the view at the end of the animation.
- * @type {ol.Coordinate|undefined}
- * @api
- */
-olx.AnimationOptions.prototype.center;
-
-
-/**
- * The zoom level of the view at the end of the animation. This takes
- * precedence over `resolution`.
- * @type {number|undefined}
- * @api
- */
-olx.AnimationOptions.prototype.zoom;
-
-
-/**
- * The resolution of the view at the end of the animation. If `zoom` is also
- * provided, this option will be ignored.
- * @type {number|undefined}
- * @api
- */
-olx.AnimationOptions.prototype.resolution;
-
-
-/**
- * The rotation of the view at the end of the animation.
- * @type {number|undefined}
- * @api
- */
-olx.AnimationOptions.prototype.rotation;
-
-
-/**
- * Optional anchor to remained fixed during a rotation or resolution animation.
- * @type {ol.Coordinate|undefined}
- * @api
- */
-olx.AnimationOptions.prototype.anchor;
-
-
-/**
- * The duration of the animation in milliseconds (defaults to `1000`).
- * @type {number|undefined}
- * @api
- */
-olx.AnimationOptions.prototype.duration;
-
-
-/**
- * The easing function used during the animation (defaults to {@link ol.easing.inAndOut}).
- * The function will be called for each frame with a number representing a
- * fraction of the animation's duration. The function should return a number
- * between 0 and 1 representing the progress toward the destination state.
- * @type {undefined|function(number):number}
- * @api
- */
-olx.AnimationOptions.prototype.easing;
-
-
-/**
- * Namespace.
- * @type {Object}
- */
-olx.control;
-
-
-/**
- * @typedef {{className: (string|undefined),
- * collapsible: (boolean|undefined),
- * collapsed: (boolean|undefined),
- * tipLabel: (string|undefined),
- * label: (string|Element|undefined),
- * collapseLabel: (string|Element|undefined),
- * render: (function(ol.MapEvent)|undefined),
- * target: (Element|string|undefined)}}
- */
-olx.control.AttributionOptions;
-
-
-/**
- * CSS class name. Default is `ol-attribution`.
- * @type {string|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.className;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.target;
-
-
-/**
- * Specify if attributions can be collapsed. If you use an OSM source,
- * should be set to `false` — see
- * {@link https://www.openstreetmap.org/copyright OSM Copyright} —
- * Default is `true`.
- * @type {boolean|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.collapsible;
-
-
-/**
- * Specify if attributions should be collapsed at startup. Default is `true`.
- * @type {boolean|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.collapsed;
-
-
-/**
- * Text label to use for the button tip. Default is `Attributions`
- * @type {string|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.tipLabel;
-
-
-/**
- * Text label to use for the collapsed attributions button. Default is `i`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.label;
-
-
-/**
- * Text label to use for the expanded attributions button. Default is `»`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.collapseLabel;
-
-
-/**
- * Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @type {function(ol.MapEvent)|undefined}
- * @api
- */
-olx.control.AttributionOptions.prototype.render;
-
-
-/**
- * @typedef {{element: (Element|undefined),
- * render: (function(ol.MapEvent)|undefined),
- * target: (Element|string|undefined)}}
- */
-olx.control.ControlOptions;
-
-
-/**
- * The element is the control's container element. This only needs to be
- * specified if you're developing a custom control.
- * @type {Element|undefined}
- * @api
- */
-olx.control.ControlOptions.prototype.element;
-
-
-/**
- * Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @type {function(ol.MapEvent)|undefined}
- * @api
- */
-olx.control.ControlOptions.prototype.render;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.ControlOptions.prototype.target;
-
-
-/**
- * @typedef {{className: (string|undefined),
- * label: (string|Element|undefined),
- * labelActive: (string|Element|undefined),
- * tipLabel: (string|undefined),
- * keys: (boolean|undefined),
- * target: (Element|string|undefined),
- * source: (Element|string|undefined)}}
- */
-olx.control.FullScreenOptions;
-
-
-/**
- * CSS class name. Default is `ol-full-screen`.
- * @type {string|undefined}
- * @api
- */
-olx.control.FullScreenOptions.prototype.className;
-
-
-/**
- * Text label to use for the button. Default is `\u2922` (NORTH EAST AND SOUTH WEST ARROW).
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.FullScreenOptions.prototype.label;
-
-
-/**
- * Text label to use for the button when full-screen is active.
- * Default is `\u00d7` (a cross).
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.FullScreenOptions.prototype.labelActive;
-
-
-/**
- * Text label to use for the button tip. Default is `Toggle full-screen`
- * @type {string|undefined}
- * @api
- */
-olx.control.FullScreenOptions.prototype.tipLabel;
-
-
-/**
- * Full keyboard access.
- * @type {boolean|undefined}
- * @api
- */
-olx.control.FullScreenOptions.prototype.keys;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.FullScreenOptions.prototype.target;
-
-/**
- * The element to be displayed fullscreen. When not provided, the element containing the map viewport will be displayed fullscreen.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.FullScreenOptions.prototype.source;
-
-/**
- * @typedef {{className: (string|undefined),
- * coordinateFormat: (module:ol/coordinate~CoordinateFormat|undefined),
- * projection: ol.ProjectionLike,
- * render: (function(ol.MapEvent)|undefined),
- * target: (Element|string|undefined),
- * undefinedHTML: (string|undefined)}}
- */
-olx.control.MousePositionOptions;
-
-
-/**
- * CSS class name. Default is `ol-mouse-position`.
- * @type {string|undefined}
- * @api
- */
-olx.control.MousePositionOptions.prototype.className;
-
-
-/**
- * Coordinate format.
- * @type {module:ol/coordinate~CoordinateFormat|undefined}
- * @api
- */
-olx.control.MousePositionOptions.prototype.coordinateFormat;
-
-
-/**
- * Projection.
- * @type {ol.ProjectionLike}
- * @api
- */
-olx.control.MousePositionOptions.prototype.projection;
-
-
-/**
- * Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @type {function(ol.MapEvent)|undefined}
- * @api
- */
-olx.control.MousePositionOptions.prototype.render;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.MousePositionOptions.prototype.target;
-
-
-/**
- * Markup for undefined coordinates. Default is `` (empty string).
- * @type {string|undefined}
- * @api
- */
-olx.control.MousePositionOptions.prototype.undefinedHTML;
-
-
-/**
- * @typedef {{collapsed: (boolean|undefined),
- * collapseLabel: (string|Element|undefined),
- * collapsible: (boolean|undefined),
- * label: (string|Element|undefined),
- * layers: (Array.
|ol.Collection.|undefined),
- * render: (function(ol.MapEvent)|undefined),
- * target: (Element|string|undefined),
- * tipLabel: (string|undefined),
- * view: (ol.View|undefined)}}
- */
-olx.control.OverviewMapOptions;
-
-
-/**
- * Whether the control should start collapsed or not (expanded).
- * Default to `true`.
- * @type {boolean|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.collapsed;
-
-
-/**
- * Text label to use for the expanded overviewmap button. Default is `«`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.collapseLabel;
-
-
-/**
- * Whether the control can be collapsed or not. Default to `true`.
- * @type {boolean|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.collapsible;
-
-
-/**
- * Text label to use for the collapsed overviewmap button. Default is `»`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.label;
-
-
-/**
- * Layers for the overview map. If not set, then all main map layers are used
- * instead.
- * @type {Array.|ol.Collection.|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.layers;
-
-
-/**
- * Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @type {function(ol.MapEvent)|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.render;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.target;
-
-
-/**
- * Text label to use for the button tip. Default is `Overview map`
- * @type {string|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.tipLabel;
-
-
-/**
- * Custom view for the overview map. If not provided, a default view with
- * an EPSG:3857 projection will be used.
- * @type {ol.View|undefined}
- * @api
- */
-olx.control.OverviewMapOptions.prototype.view;
-
-
-/**
- * @typedef {{className: (string|undefined),
- * minWidth: (number|undefined),
- * render: (function(ol.MapEvent)|undefined),
- * target: (Element|string|undefined),
- * units: (ol.control.ScaleLineUnits|string|undefined)}}
- */
-olx.control.ScaleLineOptions;
-
-
-/**
- * CSS Class name. Default is `ol-scale-line`.
- * @type {string|undefined}
- * @api
- */
-olx.control.ScaleLineOptions.prototype.className;
-
-
-/**
- * Minimum width in pixels. Default is `64`.
- * @type {number|undefined}
- * @api
- */
-olx.control.ScaleLineOptions.prototype.minWidth;
-
-
-/**
- * Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @type {function(ol.MapEvent)|undefined}
- * @api
- */
-olx.control.ScaleLineOptions.prototype.render;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.ScaleLineOptions.prototype.target;
-
-
-/**
- * Units. Default is `metric`.
- * @type {ol.control.ScaleLineUnits|string|undefined}
- * @api
- */
-olx.control.ScaleLineOptions.prototype.units;
-
-
-/**
- * @typedef {{duration: (number|undefined),
- * className: (string|undefined),
- * label: (string|Element|undefined),
- * tipLabel: (string|undefined),
- * target: (Element|string|undefined),
- * render: (function(ol.MapEvent)|undefined),
- * resetNorth: (function()|undefined),
- * autoHide: (boolean|undefined)}}
- */
-olx.control.RotateOptions;
-
-
-/**
- * CSS class name. Default is `ol-rotate`.
- * @type {string|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.className;
-
-
-/**
- * Text label to use for the rotate button. Default is `⇧`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.label;
-
-
-/**
- * Text label to use for the rotate tip. Default is `Reset rotation`
- * @type {string|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.tipLabel;
-
-
-/**
- * Animation duration in milliseconds. Default is `250`.
- * @type {number|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.duration;
-
-
-/**
- * Hide the control when rotation is 0. Default is `true`.
- * @type {boolean|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.autoHide;
-
-
-/**
- * Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @type {function(ol.MapEvent)|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.render;
-
-
-/**
- * Function called when the control is clicked. This will override the
- * default resetNorth.
- * @type {function()|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.resetNorth;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.RotateOptions.prototype.target;
-
-
-/**
- * @typedef {{duration: (number|undefined),
- * className: (string|undefined),
- * zoomInLabel: (string|Element|undefined),
- * zoomOutLabel: (string|Element|undefined),
- * zoomInTipLabel: (string|undefined),
- * zoomOutTipLabel: (string|undefined),
- * delta: (number|undefined),
- * target: (Element|string|undefined)}}
- */
-olx.control.ZoomOptions;
-
-
-/**
- * Animation duration in milliseconds. Default is `250`.
- * @type {number|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.duration;
-
-
-/**
- * CSS class name. Default is `ol-zoom`.
- * @type {string|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.className;
-
-
-/**
- * Text label to use for the zoom-in button. Default is `+`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.zoomInLabel;
-
-
-/**
- * Text label to use for the zoom-out button. Default is `-`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.zoomOutLabel;
-
-
-/**
- * Text label to use for the button tip. Default is `Zoom in`
- * @type {string|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.zoomInTipLabel;
-
-
-/**
- * Text label to use for the button tip. Default is `Zoom out`
- * @type {string|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.zoomOutTipLabel;
-
-
-/**
- * The zoom delta applied on each click.
- * @type {number|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.delta;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.ZoomOptions.prototype.target;
-
-
-/**
- * @typedef {{className: (string|undefined),
- * duration: (number|undefined),
- * maxResolution: (number|undefined),
- * minResolution: (number|undefined),
- * render: (function(ol.MapEvent)|undefined)}}
- */
-olx.control.ZoomSliderOptions;
-
-
-/**
- * CSS class name.
- * @type {string|undefined}
- * @api
- */
-olx.control.ZoomSliderOptions.prototype.className;
-
-
-/**
- * Animation duration in milliseconds. Default is `200`.
- * @type {number|undefined}
- * @api
- */
-olx.control.ZoomSliderOptions.prototype.duration;
-
-
-/**
- * Maximum resolution.
- * @type {number|undefined}
- * @api
- */
-olx.control.ZoomSliderOptions.prototype.maxResolution;
-
-
-/**
- * Minimum resolution.
- * @type {number|undefined}
- * @api
- */
-olx.control.ZoomSliderOptions.prototype.minResolution;
-
-
-/**
- * Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @type {function(ol.MapEvent)|undefined}
- * @api
- */
-olx.control.ZoomSliderOptions.prototype.render;
-
-
-/**
- * @typedef {{className: (string|undefined),
- * target: (Element|string|undefined),
- * label: (string|Element|undefined),
- * tipLabel: (string|undefined),
- * extent: (ol.Extent|undefined)}}
- */
-olx.control.ZoomToExtentOptions;
-
-
-/**
- * Class name. Default is `ol-zoom-extent`.
- * @type {string|undefined}
- * @api
- */
-olx.control.ZoomToExtentOptions.prototype.className;
-
-
-/**
- * Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @type {Element|string|undefined}
- * @api
- */
-olx.control.ZoomToExtentOptions.prototype.target;
-
-
-/**
- * Text label to use for the button. Default is `E`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @type {string|Element|undefined}
- * @api
- */
-olx.control.ZoomToExtentOptions.prototype.label;
-
-
-/**
- * Text label to use for the button tip. Default is `Zoom to extent`
- * @type {string|undefined}
- * @api
- */
-olx.control.ZoomToExtentOptions.prototype.tipLabel;
-
-
-/**
- * The extent to zoom to. If undefined the validity extent of the view
- * projection is used.
- * @type {ol.Extent|undefined}
- * @api
- */
-olx.control.ZoomToExtentOptions.prototype.extent;
-
-
-/**
- * Namespace.
- * @type {Object}
- */
-olx.format;
+let olx;
/**
diff --git a/externs/xol.js b/externs/xol.js
index 927a41f525..3869f024f6 100644
--- a/externs/xol.js
+++ b/externs/xol.js
@@ -1,200 +1,4 @@
-/**
- * @typedef {Object} AtPixelOptions
- * @property {((function(ol.layer.Layer): boolean)|undefined)} layerFilter Layer filter function. The filter function will receive one argument, the
- * {@link ol.layer.Layer layer-candidate} and it should return a boolean value.
- * Only layers which are visible and for which this function returns `true`
- * will be tested for features. By default, all visible layers will be tested.
- * @property {number|undefined} hitTolerance Hit-detection tolerance in pixels. Pixels inside the radius around the given position
- * will be checked for features. This only works for the canvas renderer and
- * not for WebGL. Default is `0`.
- */
-
-
-/**
- * @typedef {Object} ProjectionOptions
- * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.
- * @property {ol.proj.Units|string|undefined} units Units. Required unless a proj4 projection is defined for `code`.
- * @property {ol.Extent|undefined} extent The validity extent for the SRS.
- * @property {string|undefined} axisOrientation The axis orientation as specified in Proj4. The default is `enu`.
- * @property {boolean|undefined} global Whether the projection is valid for the whole globe. Default is `false`.
- * @property {number|undefined} metersPerUnit The meters per unit for the SRS. If not provided, the `units` are used to get
- * the meters per unit from the {@link ol.proj.METERS_PER_UNIT} lookup table.
- * @property {ol.Extent|undefined} worldExtent The world extent for the SRS.
- * @property {(function(number, ol.Coordinate):number|undefined)} getPointResolution Function to determine resolution at a point. The function is called with a
- * `{number}` view resolution and an `{ol.Coordinate}` as arguments, and returns
- * the `{number}` resolution at the passed coordinate. If this is `undefined`,
- * the default {@link ol.proj#getPointResolution} function will be used.
- */
-
-
-/**
- * @typedef {Object} AnimationOptions
- * @property {ol.Coordinate|undefined} center The center of the view at the end of the animation.
- * @property {number|undefined} zoom The zoom level of the view at the end of the animation. This takes
- * precedence over `resolution`.
- * @property {number|undefined} resolution The resolution of the view at the end of the animation. If `zoom` is also
- * provided, this option will be ignored.
- * @property {number|undefined} rotation The rotation of the view at the end of the animation.
- * @property {ol.Coordinate|undefined} anchor Optional anchor to remained fixed during a rotation or resolution animation.
- * @property {number|undefined} duration The duration of the animation in milliseconds (defaults to `1000`).
- * @property {undefined|function(number):number} easing The easing function used during the animation (defaults to {@link ol.easing.inAndOut}).
- * The function will be called for each frame with a number representing a
- * fraction of the animation's duration. The function should return a number
- * between 0 and 1 representing the progress toward the destination state.
- */
-
-
-/**
- * @typedef {Object} control_AttributionOptions
- * @property {string|undefined} className CSS class name. Default is `ol-attribution`.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @property {boolean|undefined} collapsible Specify if attributions can be collapsed. If you use an OSM source,
- * should be set to `false` — see
- * {@link https://www.openstreetmap.org/copyright OSM Copyright} —
- * Default is `true`.
- * @property {boolean|undefined} collapsed Specify if attributions should be collapsed at startup. Default is `true`.
- * @property {string|undefined} tipLabel Text label to use for the button tip. Default is `Attributions`
- * @property {string|Element|undefined} label Text label to use for the collapsed attributions button. Default is `i`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {string|Element|undefined} collapseLabel Text label to use for the expanded attributions button. Default is `»`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {function(ol.MapEvent)|undefined} render Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- */
-
-
-/**
- * @typedef {Object} control_ControlOptions
- * @property {Element|undefined} element The element is the control's container element. This only needs to be
- * specified if you're developing a custom control.
- * @property {function(ol.MapEvent)|undefined} render Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- */
-
-
-/**
- * @typedef {Object} control_FullScreenOptions
- * @property {string|undefined} className CSS class name. Default is `ol-full-screen`.
- * @property {string|Element|undefined} label Text label to use for the button. Default is `\u2922` (NORTH EAST AND SOUTH WEST ARROW).
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {string|Element|undefined} labelActive Text label to use for the button when full-screen is active.
- * Default is `\u00d7` (a cross).
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {string|undefined} tipLabel Text label to use for the button tip. Default is `Toggle full-screen`
- * @property {boolean|undefined} keys Full keyboard access.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @property {Element|string|undefined} source The element to be displayed fullscreen. When not provided, the element containing the map viewport will be displayed fullscreen.
- */
-
-
-/**
- * @typedef {Object} control_MousePositionOptions
- * @property {string|undefined} className CSS class name. Default is `ol-mouse-position`.
- * @property {module:ol/coordinate~CoordinateFormat|undefined} coordinateFormat Coordinate format.
- * @property {ol.ProjectionLike} projection Projection.
- * @property {function(ol.MapEvent)|undefined} render Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @property {string|undefined} undefinedHTML Markup for undefined coordinates. Default is `` (empty string).
- */
-
-
-/**
- * @typedef {Object} control_OverviewMapOptions
- * @property {boolean|undefined} collapsed Whether the control should start collapsed or not (expanded).
- * Default to `true`.
- * @property {string|Element|undefined} collapseLabel Text label to use for the expanded overviewmap button. Default is `«`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {boolean|undefined} collapsible Whether the control can be collapsed or not. Default to `true`.
- * @property {string|Element|undefined} label Text label to use for the collapsed overviewmap button. Default is `»`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {Array.|ol.Collection.|undefined} layers Layers for the overview map. If not set, then all main map layers are used
- * instead.
- * @property {function(ol.MapEvent)|undefined} render Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @property {string|undefined} tipLabel Text label to use for the button tip. Default is `Overview map`
- * @property {ol.View|undefined} view Custom view for the overview map. If not provided, a default view with
- * an EPSG:3857 projection will be used.
- */
-
-
-/**
- * @typedef {Object} control_ScaleLineOptions
- * @property {string|undefined} className CSS Class name. Default is `ol-scale-line`.
- * @property {number|undefined} minWidth Minimum width in pixels. Default is `64`.
- * @property {function(ol.MapEvent)|undefined} render Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @property {ol.control.ScaleLineUnits|string|undefined} units Units. Default is `metric`.
- */
-
-
-/**
- * @typedef {Object} control_RotateOptions
- * @property {string|undefined} className CSS class name. Default is `ol-rotate`.
- * @property {string|Element|undefined} label Text label to use for the rotate button. Default is `⇧`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {string|undefined} tipLabel Text label to use for the rotate tip. Default is `Reset rotation`
- * @property {number|undefined} duration Animation duration in milliseconds. Default is `250`.
- * @property {boolean|undefined} autoHide Hide the control when rotation is 0. Default is `true`.
- * @property {function(ol.MapEvent)|undefined} render Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- * @property {function()|undefined} resetNorth Function called when the control is clicked. This will override the
- * default resetNorth.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- */
-
-
-/**
- * @typedef {Object} control_ZoomOptions
- * @property {number|undefined} duration Animation duration in milliseconds. Default is `250`.
- * @property {string|undefined} className CSS class name. Default is `ol-zoom`.
- * @property {string|Element|undefined} zoomInLabel Text label to use for the zoom-in button. Default is `+`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {string|Element|undefined} zoomOutLabel Text label to use for the zoom-out button. Default is `-`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {string|undefined} zoomInTipLabel Text label to use for the button tip. Default is `Zoom in`
- * @property {string|undefined} zoomOutTipLabel Text label to use for the button tip. Default is `Zoom out`
- * @property {number|undefined} delta The zoom delta applied on each click.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- */
-
-
-/**
- * @typedef {Object} control_ZoomSliderOptions
- * @property {string|undefined} className CSS class name.
- * @property {number|undefined} duration Animation duration in milliseconds. Default is `200`.
- * @property {number|undefined} maxResolution Maximum resolution.
- * @property {number|undefined} minResolution Minimum resolution.
- * @property {function(ol.MapEvent)|undefined} render Function called when the control should be re-rendered. This is called
- * in a requestAnimationFrame callback.
- */
-
-
-/**
- * @typedef {Object} control_ZoomToExtentOptions
- * @property {string|undefined} className Class name. Default is `ol-zoom-extent`.
- * @property {Element|string|undefined} target Specify a target if you want the control to be rendered outside of the map's
- * viewport.
- * @property {string|Element|undefined} label Text label to use for the button. Default is `E`.
- * Instead of text, also an element (e.g. a `span` element) can be used.
- * @property {string|undefined} tipLabel Text label to use for the button tip. Default is `Zoom to extent`
- * @property {ol.Extent|undefined} extent The extent to zoom to. If undefined the validity extent of the view
- * projection is used.
- */
-
-
/**
* @typedef {Object} format_ReadOptions
* @property {ol.ProjectionLike} dataProjection Projection of the data we are reading. If not provided, the projection will
diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js
index 41d518ca16..9978248f20 100644
--- a/src/ol/PluggableMap.js
+++ b/src/ol/PluggableMap.js
@@ -61,6 +61,19 @@ import {create as createTransform, apply as applyTransform} from './transform.js
*/
+/**
+ * @typedef {Object} AtPixelOptions
+ * @property {((function(ol.layer.Layer): boolean)|undefined)} layerFilter Layer filter
+ * function. The filter function will receive one argument, the
+ * {@link ol.layer.Layer layer-candidate} and it should return a boolean value.
+ * Only layers which are visible and for which this function returns `true`
+ * will be tested for features. By default, all visible layers will be tested.
+ * @property {number|undefined} hitTolerance Hit-detection tolerance in pixels. Pixels
+ * inside the radius around the given position will be checked for features. This only
+ * works for the canvas renderer and not for WebGL. Default is `0`.
+ */
+
+
/**
* @typedef {Object} MapOptionsInternal
* @property {module:ol/Collection~Collection.} [controls]
@@ -554,7 +567,7 @@ PluggableMap.prototype.disposeInternal = function() {
* the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for
* unmanaged layers. To stop detection, callback functions can return a
* truthy value.
- * @param {olx.AtPixelOptions=} opt_options Optional options.
+ * @param {module:ol/PluggableMap~AtPixelOptions=} opt_options Optional options.
* @return {T|undefined} Callback result, i.e. the return value of last
* callback execution, or the first truthy callback return value.
* @template S,T
@@ -579,7 +592,7 @@ PluggableMap.prototype.forEachFeatureAtPixel = function(pixel, callback, opt_opt
/**
* Get all features that intersect a pixel on the viewport.
* @param {module:ol~Pixel} pixel Pixel.
- * @param {olx.AtPixelOptions=} opt_options Optional options.
+ * @param {module:ol/PluggableMap~AtPixelOptions=} opt_options Optional options.
* @return {Array.} The detected features or
* `null` if none were found.
* @api
@@ -636,7 +649,7 @@ PluggableMap.prototype.forEachLayerAtPixel = function(pixel, callback, opt_this,
* Detect if features intersect a pixel on the viewport. Layers included in the
* detection can be configured through `opt_layerFilter`.
* @param {module:ol~Pixel} pixel Pixel.
- * @param {olx.AtPixelOptions=} opt_options Optional options.
+ * @param {module:ol/PluggableMap~AtPixelOptions=} opt_options Optional options.
* @return {boolean} Is there a feature at the given pixel?
* @template U
* @api
diff --git a/src/ol/View.js b/src/ol/View.js
index 72e0ca4efe..0103a9d6cd 100644
--- a/src/ol/View.js
+++ b/src/ol/View.js
@@ -134,6 +134,28 @@ import Units from './proj/Units.js';
*/
+/**
+ * @typedef {Object} AnimationOptions
+ * @property {ol.Coordinate|undefined} center The center of the view at the end of
+ * the animation.
+ * @property {number|undefined} zoom The zoom level of the view at the end of the
+ * animation. This takes precedence over `resolution`.
+ * @property {number|undefined} resolution The resolution of the view at the end
+ * of the animation. If `zoom` is also provided, this option will be ignored.
+ * @property {number|undefined} rotation The rotation of the view at the end of
+ * the animation.
+ * @property {ol.Coordinate|undefined} anchor Optional anchor to remained fixed
+ * during a rotation or resolution animation.
+ * @property {number|undefined} duration The duration of the animation in milliseconds
+ * (defaults to `1000`).
+ * @property {undefined|function(number):number} easing The easing function used
+ * during the animation (defaults to {@link ol.easing.inAndOut}).
+ * The function will be called for each frame with a number representing a
+ * fraction of the animation's duration. The function should return a number
+ * between 0 and 1 representing the progress toward the destination state.
+ */
+
+
/**
* Default min zoom level for the map view.
* @type {number}
@@ -372,7 +394,7 @@ View.prototype.getUpdatedOptions_ = function(newOptions) {
* calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`
* (or another method that calls one of these).
*
- * @param {...(olx.AnimationOptions|function(boolean))} var_args Animation
+ * @param {...(module:ol/View~AnimationOptions|function(boolean))} var_args Animation
* options. Multiple animations can be run in series by passing multiple
* options objects. To run multiple animations in parallel, call the method
* multiple times. An optional callback can be provided as a final
@@ -412,7 +434,7 @@ View.prototype.animate = function(var_args) {
let rotation = this.getRotation();
const series = [];
for (let i = 0; i < animationCount; ++i) {
- const options = /** @type {olx.AnimationOptions} */ (arguments[i]);
+ const options = /** @type {module:ol/View~AnimationOptions} */ (arguments[i]);
const animation = /** @type {module:ol/View~Animation} */ ({
start: start,
diff --git a/src/ol/control/Attribution.js b/src/ol/control/Attribution.js
index 6224c417fe..27aed85ccd 100644
--- a/src/ol/control/Attribution.js
+++ b/src/ol/control/Attribution.js
@@ -10,6 +10,34 @@ import {listen} from '../events.js';
import EventType from '../events/EventType.js';
import {visibleAtResolution} from '../layer/Layer.js';
+
+/**
+ * @typedef {Object} Options
+ * @property {string|undefined} className CSS class name. Default is
+ * `'ol-attribution'`.
+ * @property {Element|string|undefined} target Specify a target if you
+ * want the control to be rendered outside of the map's
+ * viewport.
+ * @property {boolean|undefined} collapsible Specify if attributions can
+ * be collapsed. If you use an OSM source, should be set to `false` — see
+ * {@link https://www.openstreetmap.org/copyright OSM Copyright} —
+ * Default is `true`.
+ * @property {boolean|undefined} collapsed Specify if attributions should
+ * be collapsed at startup. Default is `true`.
+ * @property {string|undefined} tipLabel Text label to use for the button
+ * tip. Default is `'Attributions'`
+ * @property {string|Element|undefined} label Text label to use for the
+ * collapsed attributions button. Default is `'i'`.
+ * Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {string|Element|undefined} collapseLabel Text label to use
+ * for the expanded attributions button. Default is `'»'`.
+ * Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {function(ol.MapEvent)|undefined} render Function called when
+ * the control should be re-rendered. This is called in a `requestAnimationFrame`
+ * callback.
+ */
+
+
/**
* @classdesc
* Control to show all the attributions associated with the layer sources
@@ -19,7 +47,7 @@ import {visibleAtResolution} from '../layer/Layer.js';
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.AttributionOptions=} opt_options Attribution options.
+ * @param {module:ol/control/Attribution~Options=} opt_options Attribution options.
* @api
*/
const Attribution = function(opt_options) {
diff --git a/src/ol/control/Control.js b/src/ol/control/Control.js
index 92e35f208e..489369122b 100644
--- a/src/ol/control/Control.js
+++ b/src/ol/control/Control.js
@@ -8,6 +8,20 @@ import BaseObject from '../Object.js';
import {removeNode} from '../dom.js';
import {listen, unlistenByKey} from '../events.js';
+
+/**
+ * @typedef {Object} Options
+ * @property {Element|undefined} element The element is the control's
+ * container element. This only needs to be specified if you're developing
+ * a custom control.
+ * @property {function(ol.MapEvent)|undefined} render Function called when
+ * the control should be re-rendered. This is called in a `requestAnimationFrame`
+ * callback.
+ * @property {Element|string|undefined} target Specify a target if you want
+ * the control to be rendered outside of the map's viewport.
+ */
+
+
/**
* @classdesc
* A control is a visible widget with a DOM element in a fixed position on the
@@ -34,7 +48,7 @@ import {listen, unlistenByKey} from '../events.js';
* @constructor
* @extends {ol.Object}
* @implements {oli.control.Control}
- * @param {olx.control.ControlOptions} options Control options.
+ * @param {module:ol/control/Control~Options} options Control options.
* @api
*/
const Control = function(options) {
diff --git a/src/ol/control/FullScreen.js b/src/ol/control/FullScreen.js
index e05459233e..b138abc152 100644
--- a/src/ol/control/FullScreen.js
+++ b/src/ol/control/FullScreen.js
@@ -32,6 +32,27 @@ const getChangeType = (function() {
})();
+/**
+ * @typedef {Object} Options
+ * @property {string|undefined} className CSS class name. Default is
+ * `'ol-full-screen'`.
+ * @property {string|Element|undefined} label Text label to use for the button.
+ * Default is `'\u2922'` (NORTH EAST AND SOUTH WEST ARROW).
+ * Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {string|Element|undefined} labelActive Text label to use for the
+ * button when full-screen is active. Default is `'\u00d7'` (a cross).
+ * Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {string|undefined} tipLabel Text label to use for the button tip.
+ * Default is `'Toggle full-screen'`.
+ * @property {boolean|undefined} keys Full keyboard access.
+ * @property {Element|string|undefined} target Specify a target if you want the
+ * control to be rendered outside of the map's viewport.
+ * @property {Element|string|undefined} source The element to be displayed
+ * fullscreen. When not provided, the element containing the map viewport will
+ * be displayed fullscreen.
+ */
+
+
/**
* @classdesc
* Provides a button that when clicked fills up the full screen with the map.
@@ -46,7 +67,7 @@ const getChangeType = (function() {
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.FullScreenOptions=} opt_options Options.
+ * @param {module:ol/control/FullScreen~Options=} opt_options Options.
* @api
*/
const FullScreen = function(opt_options) {
diff --git a/src/ol/control/MousePosition.js b/src/ol/control/MousePosition.js
index 0909395070..5fc94ade3c 100644
--- a/src/ol/control/MousePosition.js
+++ b/src/ol/control/MousePosition.js
@@ -21,6 +21,23 @@ const PROJECTION = 'projection';
const COORDINATE_FORMAT = 'coordinateFormat';
+/**
+ * @typedef {Object} Options
+ * @property {string|undefined} className CSS class name. Default is
+ * `'ol-mouse-position'`.
+ * @property {module:ol/coordinate~CoordinateFormat|undefined} coordinateFormat
+ * Coordinate format.
+ * @property {ol.ProjectionLike} projection Projection.
+ * @property {function(ol.MapEvent)|undefined} render Function called when the
+ * control should be re-rendered. This is called in a `requestAnimationFrame`
+ * callback.
+ * @property {Element|string|undefined} target Specify a target if you want the
+ * control to be rendered outside of the map's viewport.
+ * @property {string|undefined} undefinedHTML Markup for undefined coordinates.
+ * Default is `''` (empty string).
+ */
+
+
/**
* @classdesc
* A control to show the 2D coordinates of the mouse cursor. By default, these
@@ -30,7 +47,7 @@ const COORDINATE_FORMAT = 'coordinateFormat';
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.MousePositionOptions=} opt_options Mouse position
+ * @param {module:ol/control/MousePosition~Options=} opt_options Mouse position
* options.
* @api
*/
diff --git a/src/ol/control/OverviewMap.js b/src/ol/control/OverviewMap.js
index 274523bae1..382a394a6b 100644
--- a/src/ol/control/OverviewMap.js
+++ b/src/ol/control/OverviewMap.js
@@ -36,12 +36,38 @@ const MAX_RATIO = 0.75;
const MIN_RATIO = 0.1;
+/**
+ * @typedef {Object} Options
+ * @property {boolean|undefined} collapsed Whether the control should start collapsed
+ * or not (expanded). Default to `true`.
+ * @property {string|Element|undefined} collapseLabel Text label to use for the
+ * expanded overviewmap button. Default is `'«'`. Instead of text, also an element
+ * (e.g. a `span` element) can be used.
+ * @property {boolean|undefined} collapsible Whether the control can be collapsed
+ * or not. Default to `true`.
+ * @property {string|Element|undefined} label Text label to use for the collapsed
+ * overviewmap button. Default is `'»'`. Instead of text, also an element
+ * (e.g. a `span` element) can be used.
+ * @property {Array.|ol.Collection.|undefined} layers
+ * Layers for the overview map. If not set, then all main map layers are used
+ * instead.
+ * @property {function(ol.MapEvent)|undefined} render Function called when the control
+ * should be re-rendered. This is called in a `requestAnimationFrame` callback.
+ * @property {Element|string|undefined} target Specify a target if you want the control
+ * to be rendered outside of the map's viewport.
+ * @property {string|undefined} tipLabel Text label to use for the button tip. Default
+ * is `'Overview map'`.
+ * @property {ol.View|undefined} view Custom view for the overview map. If not provided,
+ * a default view with an EPSG:3857 projection will be used.
+ */
+
+
/**
* Create a new control with a map acting as an overview map for an other
* defined map.
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.OverviewMapOptions=} opt_options OverviewMap options.
+ * @param {module:ol/control/OverviewMap~Options=} opt_options OverviewMap options.
* @api
*/
const OverviewMap = function(opt_options) {
diff --git a/src/ol/control/Rotate.js b/src/ol/control/Rotate.js
index 328d388902..6505958d60 100644
--- a/src/ol/control/Rotate.js
+++ b/src/ol/control/Rotate.js
@@ -9,6 +9,25 @@ import {listen} from '../events.js';
import EventType from '../events/EventType.js';
import {inherits} from '../index.js';
+
+/**
+ * @typedef {Object} Options
+ * @property {string|undefined} className CSS class name. Default is `'ol-rotate'`.
+ * @property {string|Element|undefined} label Text label to use for the rotate button.
+ * Default is `'⇧'`. Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {string|undefined} tipLabel Text label to use for the rotate tip. Default is
+ * `'Reset rotation'`
+ * @property {number|undefined} duration Animation duration in milliseconds. Default is `250`.
+ * @property {boolean|undefined} autoHide Hide the control when rotation is 0. Default is `true`.
+ * @property {function(ol.MapEvent)|undefined} render Function called when the control should
+ * be re-rendered. This is called in a `requestAnimationFrame` callback.
+ * @property {function()|undefined} resetNorth Function called when the control is clicked.
+ * This will override the default `resetNorth`.
+ * @property {Element|string|undefined} target Specify a target if you want the control to be
+ * rendered outside of the map's viewport.
+ */
+
+
/**
* @classdesc
* A button control to reset rotation to 0.
@@ -17,7 +36,7 @@ import {inherits} from '../index.js';
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.RotateOptions=} opt_options Rotate options.
+ * @param {module:ol/control/Rotate~Options=} opt_options Rotate options.
* @api
*/
const Rotate = function(opt_options) {
diff --git a/src/ol/control/ScaleLine.js b/src/ol/control/ScaleLine.js
index 15efa83991..3de1e823f5 100644
--- a/src/ol/control/ScaleLine.js
+++ b/src/ol/control/ScaleLine.js
@@ -25,6 +25,18 @@ const UNITS = 'units';
const LEADING_DIGITS = [1, 2, 5];
+/**
+ * @typedef {Object} Options
+ * @property {string|undefined} className CSS Class name. Default is `'ol-scale-line'`.
+ * @property {number|undefined} minWidth Minimum width in pixels. Default is `64`.
+ * @property {function(ol.MapEvent)|undefined} render Function called when the control
+ * should be re-rendered. This is called in a `requestAnimationFrame` callback.
+ * @property {Element|string|undefined} target Specify a target if you want the control
+ * to be rendered outside of the map's viewport.
+ * @property {ol.control.ScaleLineUnits|string|undefined} units Units. Default is `'metric'`.
+ */
+
+
/**
* @classdesc
* A control displaying rough y-axis distances, calculated for the center of the
@@ -37,7 +49,7 @@ const LEADING_DIGITS = [1, 2, 5];
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.ScaleLineOptions=} opt_options Scale line options.
+ * @param {module:ol/control/ScaleLine~Options=} opt_options Scale line options.
* @api
*/
const ScaleLine = function(opt_options) {
diff --git a/src/ol/control/Zoom.js b/src/ol/control/Zoom.js
index 1d4c9f4be5..46866ef5ad 100644
--- a/src/ol/control/Zoom.js
+++ b/src/ol/control/Zoom.js
@@ -8,6 +8,25 @@ import Control from '../control/Control.js';
import {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';
import {easeOut} from '../easing.js';
+
+/**
+ * @typedef {Object} Options
+ * @property {number|undefined} duration Animation duration in milliseconds. Default is `250`.
+ * @property {string|undefined} className CSS class name. Default is `'ol-zoom'`.
+ * @property {string|Element|undefined} zoomInLabel Text label to use for the zoom-in
+ * button. Default is `'+'`. Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {string|Element|undefined} zoomOutLabel Text label to use for the zoom-out button.
+ * Default is `'-'`. Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {string|undefined} zoomInTipLabel Text label to use for the button tip. Default is
+ * `'Zoom in'`.
+ * @property {string|undefined} zoomOutTipLabel Text label to use for the button tip. Default is
+ * `'Zoom out'`.
+ * @property {number|undefined} delta The zoom delta applied on each click.
+ * @property {Element|string|undefined} target Specify a target if you want the control to be
+ * rendered outside of the map's viewport.
+ */
+
+
/**
* @classdesc
* A control with 2 buttons, one for zoom in and one for zoom out.
@@ -16,7 +35,7 @@ import {easeOut} from '../easing.js';
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.ZoomOptions=} opt_options Zoom options.
+ * @param {module:ol/control/Zoom~Options=} opt_options Zoom options.
* @api
*/
const Zoom = function(opt_options) {
diff --git a/src/ol/control/ZoomSlider.js b/src/ol/control/ZoomSlider.js
index 2685b7abf1..0663b9c90a 100644
--- a/src/ol/control/ZoomSlider.js
+++ b/src/ol/control/ZoomSlider.js
@@ -25,6 +25,17 @@ const Direction = {
};
+/**
+ * @typedef {Object} Options
+ * @property {string|undefined} className CSS class name.
+ * @property {number|undefined} duration Animation duration in milliseconds. Default is `200`.
+ * @property {number|undefined} maxResolution Maximum resolution.
+ * @property {number|undefined} minResolution Minimum resolution.
+ * @property {function(ol.MapEvent)|undefined} render Function called when the control
+ * should be re-rendered. This is called in a `requestAnimationFrame` callback.
+ */
+
+
/**
* @classdesc
* A slider type of control for zooming.
@@ -35,7 +46,7 @@ const Direction = {
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.ZoomSliderOptions=} opt_options Zoom slider options.
+ * @param {module:ol/control/ZoomSlider~Options=} opt_options Zoom slider options.
* @api
*/
const ZoomSlider = function(opt_options) {
diff --git a/src/ol/control/ZoomToExtent.js b/src/ol/control/ZoomToExtent.js
index 022021c202..b32f05b50a 100644
--- a/src/ol/control/ZoomToExtent.js
+++ b/src/ol/control/ZoomToExtent.js
@@ -7,6 +7,21 @@ import EventType from '../events/EventType.js';
import Control from '../control/Control.js';
import {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';
+
+/**
+ * @typedef {Object} Options
+ * @property {string|undefined} className Class name. Default is `'ol-zoom-extent'`.
+ * @property {Element|string|undefined} target Specify a target if you want the control
+ * to be rendered outside of the map's viewport.
+ * @property {string|Element|undefined} label Text label to use for the button. Default
+ * is `'E'`. Instead of text, also an element (e.g. a `span` element) can be used.
+ * @property {string|undefined} tipLabel Text label to use for the button tip. Default
+ * is `'Zoom to extent'`.
+ * @property {ol.Extent|undefined} extent The extent to zoom to. If undefined the validity
+ * extent of the view projection is used.
+ */
+
+
/**
* @classdesc
* A button control which, when pressed, changes the map view to a specific
@@ -14,7 +29,7 @@ import {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';
*
* @constructor
* @extends {ol.control.Control}
- * @param {olx.control.ZoomToExtentOptions=} opt_options Options.
+ * @param {module:ol/control/ZoomToExtent~Options=} opt_options Options.
* @api
*/
const ZoomToExtent = function(opt_options) {
diff --git a/src/ol/proj/Projection.js b/src/ol/proj/Projection.js
index eb572f0ebc..5829dbb780 100644
--- a/src/ol/proj/Projection.js
+++ b/src/ol/proj/Projection.js
@@ -3,6 +3,29 @@
*/
import {METERS_PER_UNIT} from '../proj/Units.js';
+
+/**
+ * @typedef {Object} Options
+ * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.
+ * @property {ol.proj.Units|string|undefined} units Units. Required unless a
+ * proj4 projection is defined for `code`.
+ * @property {ol.Extent|undefined} extent The validity extent for the SRS.
+ * @property {string|undefined} axisOrientation The axis orientation as specified
+ * in Proj4. The default is `enu`.
+ * @property {boolean|undefined} global Whether the projection is valid for the
+ * whole globe. Default is `false`.
+ * @property {number|undefined} metersPerUnit The meters per unit for the SRS.
+ * If not provided, the `units` are used to get the meters per unit from the {@link ol.proj.METERS_PER_UNIT}
+ * lookup table.
+ * @property {ol.Extent|undefined} worldExtent The world extent for the SRS.
+ * @property {(function(number, ol.Coordinate):number|undefined)} getPointResolution
+ * Function to determine resolution at a point. The function is called with a
+ * `{number}` view resolution and an `{ol.Coordinate}` as arguments, and returns
+ * the `{number}` resolution at the passed coordinate. If this is `undefined`,
+ * the default {@link ol.proj#getPointResolution} function will be used.
+ */
+
+
/**
* @classdesc
* Projection definition class. One of these is created for each projection
@@ -29,7 +52,7 @@ import {METERS_PER_UNIT} from '../proj/Units.js';
* namespace for proj4, use {@link ol.proj.setProj4}.
*
* @constructor
- * @param {olx.ProjectionOptions} options Projection options.
+ * @param {module:ol/proj/Projection~Options} options Projection options.
* @struct
* @api
*/