{"version":3,"sources":["../../src/ol/util.js","../../src/ol/AssertionError.js","../../src/ol/asserts.js","../../src/ol/math.js","../../../src/ol/geom/GeometryType.js","../../src/ol/sphere.js","../../../src/ol/extent/Corner.js","../../../src/ol/extent/Relationship.js","../../src/ol/extent.js","../../../src/ol/proj/Units.js","../../../src/ol/proj/Projection.js","../../../src/ol/proj/epsg3857.js","../../../src/ol/proj/epsg4326.js","../../../src/ol/proj/projections.js","../../src/ol/obj.js","../../../src/ol/proj/transforms.js","../../src/ol/proj.js","../../../src/ol/reproj/common.js","../../src/ol/TileState.js","../../src/ol/easing.js","../../src/ol/Disposable.js","../../src/ol/events.js","../../src/ol/functions.js","../../../src/ol/events/Event.js","../../../src/ol/events/Target.js","../../../src/ol/events/EventType.js","../../src/ol/Tile.js","../../src/ol/dom.js","../../src/ol/ImageTile.js","../../../src/ol/structs/LRUCache.js","../../src/ol/tilecoord.js","../../src/ol/TileCache.js","../../src/ol/reproj.js","../../../src/ol/reproj/Triangulation.js","../../../src/ol/reproj/Tile.js","../../src/ol/tileurlfunction.js","../../src/ol/size.js","../../src/ol/ObjectEventType.js","../../src/ol/Observable.js","../../src/ol/Object.js","../../../src/ol/source/State.js","../../../src/ol/source/Source.js","../../../src/ol/tilegrid/common.js","../../src/ol/TileRange.js","../../src/ol/array.js","../../../src/ol/tilegrid/TileGrid.js","../../src/ol/tilegrid.js","../../../src/ol/source/Tile.js","../../../src/ol/source/TileEventType.js","../../../src/ol/source/UrlTile.js","../../../src/ol/source/TileImage.js","../../../src/ol/source/XYZ.js","../../../src/ol/source/OSM.js","../../src/ol/Feature.js","../../src/ol/CollectionEventType.js","../../src/ol/Collection.js","../../src/ol/MapEvent.js","../../src/ol/MapBrowserEvent.js","../../src/ol/webgl.js","../../src/ol/has.js","../../src/ol/MapBrowserEventType.js","../../src/ol/MapBrowserPointerEvent.js","../../../src/ol/pointer/EventType.js","../../../src/ol/pointer/EventSource.js","../../../src/ol/pointer/MouseSource.js","../../../src/ol/pointer/MsSource.js","../../../src/ol/pointer/NativeSource.js","../../../src/ol/pointer/PointerEvent.js","../../../src/ol/pointer/TouchSource.js","../../../src/ol/pointer/PointerEventHandler.js","../../src/ol/MapBrowserEventHandler.js","../../src/ol/MapEventType.js","../../src/ol/MapProperty.js","../../../src/ol/render/EventType.js","../../../src/ol/structs/PriorityQueue.js","../../src/ol/TileQueue.js","../../src/ol/centerconstraint.js","../../src/ol/resolutionconstraint.js","../../src/ol/rotationconstraint.js","../../src/ol/ViewHint.js","../../src/ol/ViewProperty.js","../../src/ol/string.js","../../src/ol/coordinate.js","../../../src/ol/geom/GeometryLayout.js","../../../../src/ol/geom/flat/transform.js","../../src/ol/transform.js","../../../src/ol/geom/Geometry.js","../../../src/ol/geom/SimpleGeometry.js","../../../../src/ol/geom/flat/area.js","../../../../src/ol/geom/flat/closest.js","../../../../src/ol/geom/flat/deflate.js","../../../../src/ol/geom/flat/inflate.js","../../../../src/ol/geom/flat/simplify.js","../../../src/ol/geom/LinearRing.js","../../../src/ol/geom/Point.js","../../../../src/ol/geom/flat/contains.js","../../../../src/ol/geom/flat/interiorpoint.js","../../../../src/ol/geom/flat/segments.js","../../../../src/ol/geom/flat/intersectsextent.js","../../../../src/ol/geom/flat/reverse.js","../../../../src/ol/geom/flat/orient.js","../../../src/ol/geom/Polygon.js","../../src/ol/View.js","../../../src/ol/layer/Property.js","../../../src/ol/layer/Base.js","../../../src/ol/layer/Group.js","../../src/ol/PluggableMap.js","../../../src/ol/control/Control.js","../../src/ol/css.js","../../../src/ol/layer/Layer.js","../../../src/ol/control/Attribution.js","../../../src/ol/control/Rotate.js","../../../src/ol/control/Zoom.js","../../../src/ol/control/util.js","../../src/ol/Kinetic.js","../../../src/ol/interaction/Property.js","../../../src/ol/interaction/Interaction.js","../../../src/ol/interaction/DoubleClickZoom.js","../../../src/ol/events/condition.js","../../../src/ol/interaction/Pointer.js","../../../src/ol/interaction/DragPan.js","../../../src/ol/interaction/DragRotate.js","../../../src/ol/render/Box.js","../../../src/ol/interaction/DragBox.js","../../../src/ol/interaction/DragZoom.js","../../../src/ol/events/KeyCode.js","../../../src/ol/interaction/KeyboardPan.js","../../../src/ol/interaction/KeyboardZoom.js","../../../src/ol/interaction/MouseWheelZoom.js","../../../src/ol/interaction/PinchRotate.js","../../../src/ol/interaction/PinchZoom.js","../../../src/ol/interaction/DragAndDrop.js","../../../src/ol/interaction/DragRotateAndZoom.js","../../../src/ol/geom/Circle.js","../../../../src/ol/geom/flat/interpolate.js","../../../../src/ol/geom/flat/length.js","../../../src/ol/geom/LineString.js","../../../src/ol/geom/MultiLineString.js","../../../src/ol/geom/MultiPoint.js","../../../../src/ol/geom/flat/center.js","../../../src/ol/geom/MultiPolygon.js","../../src/ol/LayerType.js","../../../src/ol/layer/VectorRenderType.js","../../src/ol/color.js","../../src/ol/colorlike.js","../../src/ol/ImageState.js","../../../src/ol/render/canvas.js","../../../src/ol/style/Image.js","../../../src/ol/style/RegularShape.js","../../../src/ol/style/Circle.js","../../../src/ol/style/Fill.js","../../../src/ol/style/Stroke.js","../../../src/ol/style/Style.js","../../../src/ol/layer/Vector.js","../../../src/ol/format/FormatType.js","../../src/ol/featureloader.js","../../src/ol/loadingstrategy.js","../../../src/ol/source/VectorEventType.js","node_modules/quickselect/quickselect.js","node_modules/rbush/index.js","../../../src/ol/structs/RBush.js","../../../src/ol/source/Vector.js","../../../src/ol/interaction/Draw.js","../../../src/ol/interaction/Extent.js","../../../src/ol/interaction/Modify.js","../../../src/ol/interaction/Select.js","../../../src/ol/interaction/Snap.js","../../../src/ol/interaction/Translate.js","../../src/ol/interaction.js","../../src/ol/ImageBase.js","../../src/ol/ImageCanvas.js","../../../src/ol/render/Event.js","../../../src/ol/render/VectorContext.js","../../../../src/ol/render/canvas/Immediate.js","../../../src/ol/style/IconImageCache.js","../../../src/ol/renderer/Map.js","../../../../src/ol/renderer/canvas/Map.js","../../../src/ol/renderer/Layer.js","../../../../src/ol/renderer/canvas/Layer.js","../../../../src/ol/renderer/canvas/IntermediateCanvas.js","../../../../src/ol/renderer/canvas/ImageLayer.js","../../../../src/ol/renderer/canvas/TileLayer.js","../../../src/ol/render/ReplayGroup.js","../../../src/ol/render/ReplayType.js","../../../../src/ol/geom/flat/textpath.js","../../../../src/ol/render/canvas/Instruction.js","../../../src/ol/render/replay.js","../../../../src/ol/render/canvas/Replay.js","../../../../src/ol/render/canvas/ImageReplay.js","../../../../src/ol/render/canvas/LineStringReplay.js","../../../../src/ol/render/canvas/PolygonReplay.js","../../../../src/ol/geom/flat/straightchunk.js","../../../src/ol/style/TextPlacement.js","../../../../src/ol/render/canvas/TextReplay.js","../../../../src/ol/render/canvas/ReplayGroup.js","../../../src/ol/renderer/vector.js","../../../../src/ol/renderer/canvas/VectorLayer.js","../../../src/ol/layer/VectorTileRenderType.js","../../../../src/ol/renderer/canvas/VectorTileLayer.js","../../src/ol/Map.js","../../../src/ol/style/IconAnchorUnits.js","../../../src/ol/style/IconImage.js","../../../src/ol/style/IconOrigin.js","../../../src/ol/style/Icon.js","../../../src/ol/layer/Heatmap.js","../../../src/ol/layer/Image.js","../../../src/ol/layer/TileProperty.js","../../../src/ol/layer/Tile.js","../../../src/ol/layer/VectorTile.js","../../src/ol/layer.js","../../../src/ol/source/Stamen.js","../../../src/ol/style/Atlas.js","../../../src/ol/style/AtlasManager.js","../../../src/ol/style/Text.js","../../src/ol/style.js","../../src/ol/OverlayPositioning.js","../../src/ol/Overlay.js","index.js"],"names":["const","let","super","arguments","i","length","feature","featureKey","this","ii","t","tt","thailand","supanbury","lopburi","createStyle","src","img","Style","image","Icon","anchor","crossOrigin","imgSize","width","height","undefined","C22","Feature","geometry","Point","name","href","population","rainfall","Chaopraya","Boromtat","Manorom","C2","Pakklong","Maharat","Pontep","C12","bangtry","setStyle","map","Map","layers","TileLayer","source","OSM","VectorLayer","style","get","VectorSource","features","target","document","getElementById","view","View","center","zoom","info","$","tooltip","animation","trigger","displayFeatureInfo","pixel","css","left","top","forEachFeatureAtPixel","attr","on","evt","dragging","getEventPixel","originalEvent","console","log","link","a","window","open"],"mappings":"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","file":"ol-node.3db1b339.map","sourceRoot":"..","sourcesContent":["/**\n * @module ol/util\n */\n\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function() {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * Usage:\n *\n * function ParentClass(a, b) { }\n * ParentClass.prototype.foo = function(a) { }\n *\n * function ChildClass(a, b, c) {\n * // Call parent constructor\n * ParentClass.call(this, a, b);\n * }\n * inherits(ChildClass, ParentClass);\n *\n * var child = new ChildClass('a', 'b', 'see');\n * child.foo(); // This works.\n *\n * @param {!Function} childCtor Child constructor.\n * @param {!Function} parentCtor Parent constructor.\n * @function module:ol.inherits\n * @deprecated\n * @api\n */\nexport function inherits(childCtor, parentCtor) {\n childCtor.prototype = Object.create(parentCtor.prototype);\n childCtor.prototype.constructor = childCtor;\n}\n\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nlet uidCounter_ = 0;\n\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @function module:ol.getUid\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport const VERSION = 'latest';\n","/**\n * @module ol/AssertionError\n */\nimport {VERSION} from './util.js';\n\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nclass AssertionError extends Error {\n\n /**\n * @param {number} code Error code.\n */\n constructor(code) {\n const path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n const message = 'Assertion failed. See https://openlayers.org/en/' + path +\n '/doc/errors/#' + code + ' for details.';\n\n super(message);\n\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n this.code = code;\n\n /**\n * @type {string}\n */\n this.name = 'AssertionError';\n\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n this.message = message;\n }\n\n}\n\nexport default AssertionError;\n","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n","/**\n * @module ol/math\n */\nimport {assert} from './asserts.js';\n\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\n\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport const cosh = (function() {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n let cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n } else {\n // … else, use the reference implementation of MDN:\n cosh = function(x) {\n const y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n}());\n\n\n/**\n * @param {number} x X.\n * @return {number} The smallest power of two greater than or equal to x.\n */\nexport function roundUpToPowerOfTwo(x) {\n assert(0 < x, 29); // `x` must be greater than `0`\n return Math.pow(2, Math.ceil(Math.log(x) / Math.LN2));\n}\n\n\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n const dx = x2 - x1;\n const dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n } else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n\n\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n const dx = x2 - x1;\n const dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n\n\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n const n = mat.length;\n\n for (let i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n let maxRow = i;\n let maxEl = Math.abs(mat[i][i]);\n for (let r = i + 1; r < n; r++) {\n const absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n\n // Swap max row with i-th (current) row\n const tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (let j = i + 1; j < n; j++) {\n const coef = -mat[j][i] / mat[i][i];\n for (let k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n } else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n\n // Solve Ax=b for upper triangular matrix A (mat)\n const x = new Array(n);\n for (let l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (let m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n\n\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return angleInRadians * 180 / Math.PI;\n}\n\n\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return angleInDegrees * Math.PI / 180;\n}\n\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n const r = a % b;\n return r * b < 0 ? r + b : r;\n}\n\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n","/**\n * @module ol/geom/GeometryType\n */\n\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle'\n};\n","/**\n * @license\n * Latitude/longitude spherical geodesy formulae taken from\n * http://www.movable-type.co.uk/scripts/latlong.html\n * Licensed under CC-BY-3.0.\n */\n\n/**\n * @module ol/sphere\n */\nimport {toRadians, toDegrees} from './math.js';\nimport GeometryType from './geom/GeometryType.js';\n\n\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the radius of the\n * earth is used (Clarke 1866 Authalic Sphere).\n */\n\n\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport const DEFAULT_RADIUS = 6371008.8;\n\n\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n const radius = opt_radius || DEFAULT_RADIUS;\n const lat1 = toRadians(c1[1]);\n const lat2 = toRadians(c2[1]);\n const deltaLatBy2 = (lat2 - lat1) / 2;\n const deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n const a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) *\n Math.cos(lat1) * Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n\n\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n let length = 0;\n for (let i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n\n\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n const options = opt_options || {};\n const radius = options.radius || DEFAULT_RADIUS;\n const projection = options.projection || 'EPSG:3857';\n const type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n let length = 0;\n let coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n const geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n\n\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs-new.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n let area = 0;\n const len = coordinates.length;\n let x1 = coordinates[len - 1][0];\n let y1 = coordinates[len - 1][1];\n for (let i = 0; i < len; i++) {\n const x2 = coordinates[i][0];\n const y2 = coordinates[i][1];\n area += toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) +\n Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return area * radius * radius / 2.0;\n}\n\n\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n const options = opt_options || {};\n const radius = options.radius || DEFAULT_RADIUS;\n const projection = options.projection || 'EPSG:3857';\n const type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n let area = 0;\n let coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n const geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n\n\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n const radius = opt_radius || DEFAULT_RADIUS;\n const lat1 = toRadians(c1[1]);\n const lon1 = toRadians(c1[0]);\n const dByR = distance / radius;\n const lat = Math.asin(\n Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n const lon = lon1 + Math.atan2(\n Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1),\n Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n","/**\n * @module ol/extent/Corner\n */\n\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right'\n};\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16\n};\n","/**\n * @module ol/extent\n */\nimport {assert} from './asserts.js';\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\n\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n const extent = createEmpty();\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent=} opt_extent Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n const minX = Math.min.apply(null, xs);\n const minY = Math.min.apply(null, ys);\n const maxX = Math.max.apply(null, xs);\n const maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n\n\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n } else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value\n ];\n }\n}\n\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n } else {\n return extent.slice();\n }\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n let dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n } else if (extent[2] < x) {\n dx = x - extent[2];\n } else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n } else if (extent[3] < y) {\n dy = y - extent[3];\n } else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return extent1[0] <= extent2[0] && extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] && extent2[3] <= extent1[3];\n}\n\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {Relationship} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const x = coordinate[0];\n const y = coordinate[1];\n let relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n } else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n } else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n\n\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n } else {\n return [minX, minY, maxX, maxY];\n }\n}\n\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(\n Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n const x = coordinate[0];\n const y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n\n\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n const extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n const extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array>} rings Rings.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n const extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return extent1[0] == extent2[0] && extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] && extent1[3] == extent2[3];\n}\n\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (let i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(this:T, import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @param {T=} opt_this Value to use as `this` when executing `callback`.\n * @return {S|boolean} Value.\n * @template S, T\n */\nexport function forEachCorner(extent, callback, opt_this) {\n let val;\n val = callback.call(opt_this, getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback.call(opt_this, getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback.call(opt_this, getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback.call(opt_this, getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n\n\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n let area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n let coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n } else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n } else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n } else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n } else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n const minX = Math.min(extent1[0], extent2[0]);\n const minY = Math.min(extent1[1], extent2[1]);\n const maxX = Math.max(extent1[2], extent2[2]);\n const maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n const dx = resolution * size[0] / 2;\n const dy = resolution * size[1] / 2;\n const cosRotation = Math.cos(rotation);\n const sinRotation = Math.sin(rotation);\n const xCos = dx * cosRotation;\n const xSin = dx * sinRotation;\n const yCos = dy * cosRotation;\n const ySin = dy * sinRotation;\n const x = center[0];\n const y = center[1];\n const x0 = x - xCos + ySin;\n const x1 = x - xCos - ySin;\n const x2 = x + xCos - ySin;\n const x3 = x + xCos + ySin;\n const y0 = y - xSin - yCos;\n const y1 = y - xSin + yCos;\n const y2 = y + xSin + yCos;\n const y3 = y + xSin - yCos;\n return createOrUpdate(\n Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3),\n Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3),\n opt_extent);\n}\n\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n const intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent=} opt_extent Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n const intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n } else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n } else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n } else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n } else {\n intersection[3] = extent2[3];\n }\n } else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n\n\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1];\n}\n\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n } else {\n return extent;\n }\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n\n\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n let intersects = false;\n const startRel = coordinateRelationship(extent, start);\n const endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n } else {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const startX = start[0];\n const startY = start[1];\n const endX = end[0];\n const endY = end[1];\n const slope = (endY - startY) / (endX - startX);\n let x, y;\n if (!!(endRel & Relationship.ABOVE) &&\n !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - ((endY - maxY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - ((endX - maxX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects && !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - ((endY - minY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - ((endX - minX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n\n }\n return intersects;\n}\n\n\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent) {\n const coordinates = [\n extent[0], extent[1],\n extent[0], extent[3],\n extent[2], extent[1],\n extent[2], extent[3]\n ];\n transformFn(coordinates, coordinates, 2);\n const xs = [coordinates[0], coordinates[2], coordinates[4], coordinates[6]];\n const ys = [coordinates[1], coordinates[3], coordinates[5], coordinates[7]];\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n","/**\n * @module ol/proj/Units\n */\n\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nconst Units = {\n DEGREES: 'degrees',\n FEET: 'ft',\n METERS: 'm',\n PIXELS: 'pixels',\n TILE_PIXELS: 'tile-pixels',\n USFEET: 'us-ft'\n};\n\n\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport const METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.DEGREES] = 2 * Math.PI * 6370997 / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\n\nexport default Units;\n","/**\n * @module ol/proj/Projection\n */\nimport {METERS_PER_UNIT} from './Units.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `{number}` view resolution and an `{import(\"../coordinate.js\").Coordinate}` as arguments, and returns\n * the `{number}` resolution at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj#getPointResolution} function will be used.\n */\n\n\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj~get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4~register} function.\n *\n * @api\n */\nclass Projection {\n\n /**\n * @param {Options} options Projection options.\n */\n constructor(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ = options.worldExtent !== undefined ?\n options.worldExtent : null;\n\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ = options.axisOrientation !== undefined ?\n options.axisOrientation : 'enu';\n\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n canWrapX() {\n return this.canWrapX_;\n }\n\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n getCode() {\n return this.code_;\n }\n\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n getExtent() {\n return this.extent_;\n }\n\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n getUnits() {\n return this.units_;\n }\n\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n getMetersPerUnit() {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n }\n\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n getWorldExtent() {\n return this.worldExtent_;\n }\n\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n getAxisOrientation() {\n return this.axisOrientation_;\n }\n\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n isGlobal() {\n return this.global_;\n }\n\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n setGlobal(global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n }\n\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n getDefaultTileGrid() {\n return this.defaultTileGrid_;\n }\n\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n setDefaultTileGrid(tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n }\n\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n setExtent(extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n }\n\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n setWorldExtent(worldExtent) {\n this.worldExtent_ = worldExtent;\n }\n\n /**\n * Set the getPointResolution function (see {@link module:ol/proj~getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n setGetPointResolution(func) {\n this.getPointResolutionFunc_ = func;\n }\n\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n getPointResolutionFunc() {\n return this.getPointResolutionFunc_;\n }\n}\n\nexport default Projection;\n","/**\n * @module ol/proj/epsg3857\n */\nimport {cosh} from '../math.js';\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n\n\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const HALF_SIZE = Math.PI * RADIUS;\n\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [\n -HALF_SIZE, -HALF_SIZE,\n HALF_SIZE, HALF_SIZE\n];\n\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const WORLD_EXTENT = [-180, -85, 180, 85];\n\n\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nclass EPSG3857Projection extends Projection {\n\n /**\n * @param {string} code Code.\n */\n constructor(code) {\n super({\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function(resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n }\n });\n\n }\n\n}\n\n\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport const PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG:6.18:3:3857'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG::3857'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857')\n];\n\n\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n const length = input.length;\n const dimension = opt_dimension > 1 ? opt_dimension : 2;\n let output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n } else {\n output = new Array(length);\n }\n }\n const halfSize = HALF_SIZE;\n for (let i = 0; i < length; i += dimension) {\n output[i] = halfSize * input[i] / 180;\n let y = RADIUS *\n Math.log(Math.tan(Math.PI * (input[i + 1] + 90) / 360));\n if (y > halfSize) {\n y = halfSize;\n } else if (y < -halfSize) {\n y = -halfSize;\n }\n output[i + 1] = y;\n }\n return output;\n}\n\n\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n const length = input.length;\n const dimension = opt_dimension > 1 ? opt_dimension : 2;\n let output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n } else {\n output = new Array(length);\n }\n }\n for (let i = 0; i < length; i += dimension) {\n output[i] = 180 * input[i] / HALF_SIZE;\n output[i + 1] = 360 * Math.atan(\n Math.exp(input[i + 1] / RADIUS)) / Math.PI - 90;\n }\n return output;\n}\n","/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n\n\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [-180, -90, 180, 90];\n\n\n/**\n * @const\n * @type {number}\n */\nexport const METERS_PER_UNIT = Math.PI * RADIUS / 180;\n\n\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nclass EPSG4326Projection extends Projection {\n\n /**\n * @param {string} code Code.\n * @param {string=} opt_axisOrientation Axis orientation.\n */\n constructor(code, opt_axisOrientation) {\n super({\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT\n });\n\n }\n\n}\n\n\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport const PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG::4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG:6.6:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('urn:x-ogc:def:crs:EPSG:4326', 'neu')\n];\n","/**\n * @module ol/proj/projections\n */\n\n\n/**\n * @type {Object}\n */\nlet cache = {};\n\n\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n\n\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return cache[code] || null;\n}\n\n\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n","/**\n * @module ol/obj\n */\n\n\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport const assign = (typeof Object.assign === 'function') ? Object.assign : function(target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n const output = Object(target);\n for (let i = 1, ii = arguments.length; i < ii; ++i) {\n const source = arguments[i];\n if (source !== undefined && source !== null) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n};\n\n\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (const property in object) {\n delete object[property];\n }\n}\n\n\n/**\n * Get an array of property values from an object.\n * @param {Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport function getValues(object) {\n const values = [];\n for (const property in object) {\n values.push(object[property]);\n }\n return values;\n}\n\n\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n let property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n","/**\n * @module ol/proj/transforms\n */\nimport {isEmpty} from '../obj.js';\n\n\n/**\n * @private\n * @type {!Object>}\n */\nlet transforms = {};\n\n\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n\n\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n const sourceCode = source.getCode();\n const destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n\n\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n const sourceCode = source.getCode();\n const destinationCode = destination.getCode();\n const transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n\n\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n let transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n","/**\n * @module ol/proj\n */\n\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj~addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection} object for the new projection and add it with\n * {@link module:ol/proj~addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj~addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection} with\n * {@link module:ol/proj~addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport {getDistance} from './sphere.js';\nimport {applyTransform} from './extent.js';\nimport {modulo} from './math.js';\nimport {toEPSG4326, fromEPSG4326, PROJECTIONS as EPSG3857_PROJECTIONS} from './proj/epsg3857.js';\nimport {PROJECTIONS as EPSG4326_PROJECTIONS} from './proj/epsg4326.js';\nimport Projection from './proj/Projection.js';\nimport Units, {METERS_PER_UNIT} from './proj/Units.js';\nimport * as projections from './proj/projections.js';\nimport {add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc} from './proj/transforms.js';\n\n\n/**\n * A projection as {@link module:ol/proj/Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n\n\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\n\n\nexport {METERS_PER_UNIT};\n\nexport {Projection};\n\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n let output;\n if (opt_output !== undefined) {\n for (let i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n } else {\n output = input.slice();\n }\n return output;\n}\n\n\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (let i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n\n\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n projections.add(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n\n\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n\n\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string' ?\n projections.get(/** @type {string} */ (projectionLike)) :\n (/** @type {Projection} */ (projectionLike) || null);\n}\n\n\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the 'point' pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {Units=} opt_units Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n let pointResolution;\n const getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n } else {\n const units = projection.getUnits();\n if (units == Units.DEGREES && !opt_units || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n } else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n const toEPSG4326 = getTransformFromProjections(projection, get('EPSG:4326'));\n let vertices = [\n point[0] - resolution / 2, point[1],\n point[0] + resolution / 2, point[1],\n point[0], point[1] - resolution / 2,\n point[0], point[1] + resolution / 2\n ];\n vertices = toEPSG4326(vertices, vertices, 2);\n const width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n const height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n const metersPerUnit = opt_units ?\n METERS_PER_UNIT[opt_units] :\n projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n\n\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function(source) {\n projections.forEach(function(destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n\n\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function(projection1) {\n projections2.forEach(function(projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n\n\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n projections.clear();\n clearTransformFuncs();\n}\n\n\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n } else if (typeof projection === 'string') {\n return get(projection);\n } else {\n return (\n /** @type {Projection} */ (projection)\n );\n }\n}\n\n\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array=} opt_output Output.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output.\n */\n function(input, opt_output, opt_dimension) {\n const length = input.length;\n const dimension = opt_dimension !== undefined ? opt_dimension : 2;\n const output = opt_output !== undefined ? opt_output : new Array(length);\n for (let i = 0; i < length; i += dimension) {\n const point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (let j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n\n\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n const sourceProj = get(source);\n const destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n\n\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike=} opt_projection Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n return transform(coordinate, 'EPSG:4326',\n opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n\n\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike=} opt_projection Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n const lonLat = transform(coordinate,\n opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n const lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n\n\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n const equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n } else {\n const transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n\n\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n const sourceCode = sourceProjection.getCode();\n const destinationCode = destinationProjection.getCode();\n let transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n\n\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n const sourceProjection = get(source);\n const destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n\n\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj~transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n const transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n\n\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination) {\n const transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc);\n}\n\n\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n const transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\n\naddCommon();\n","/**\n * @module ol/reproj/common\n */\n\n/**\n * Default maximum allowed threshold (in pixels) for reprojection\n * triangulation.\n * @type {number}\n */\nexport const ERROR_THRESHOLD = 0.5;\n\n/**\n * Enable automatic reprojection of raster sources. Default is `true`.\n * TODO: decide if we want to expose this as a build flag or remove it\n * @type {boolean}\n */\nexport const ENABLE_RASTER_REPROJECTION = true;\n","/**\n * @module ol/TileState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n ABORT: 5\n};\n","/**\n * @module ol/easing\n */\n\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n\n\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing~inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n } else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @private\n */\n this.disposed_ = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed_) {\n this.disposed_ = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {Object} [bindTo]\n * @property {ListenerFunction} [boundListener]\n * @property {boolean} callOnce\n * @property {number} [deleteIndex]\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n\n/**\n * @param {EventsKey} listenerObj Listener object.\n * @return {ListenerFunction} Bound listener.\n */\nexport function bindListener(listenerObj) {\n const boundListener = function(evt) {\n const listener = listenerObj.listener;\n const bindTo = listenerObj.bindTo || listenerObj.target;\n if (listenerObj.callOnce) {\n unlistenByKey(listenerObj);\n }\n return listener.call(bindTo, evt);\n };\n listenerObj.boundListener = boundListener;\n return boundListener;\n}\n\n\n/**\n * Finds the matching {@link module:ol/events~EventsKey} in the given listener\n * array.\n *\n * @param {!Array} listeners Array of listeners.\n * @param {!Function} listener The listener function.\n * @param {Object=} opt_this The `this` value inside the listener.\n * @param {boolean=} opt_setDeleteIndex Set the deleteIndex on the matching\n * listener, for {@link module:ol/events~unlistenByKey}.\n * @return {EventsKey|undefined} The matching listener object.\n */\nexport function findListener(listeners, listener, opt_this, opt_setDeleteIndex) {\n let listenerObj;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n listenerObj = listeners[i];\n if (listenerObj.listener === listener &&\n listenerObj.bindTo === opt_this) {\n if (opt_setDeleteIndex) {\n listenerObj.deleteIndex = i;\n }\n return listenerObj;\n }\n }\n return undefined;\n}\n\n\n/**\n * @param {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\nexport function getListeners(target, type) {\n const listenerMap = getListenerMap(target);\n return listenerMap ? listenerMap[type] : undefined;\n}\n\n\n/**\n * Get the lookup of listeners.\n * @param {Object} target Target.\n * @param {boolean=} opt_create If a map should be created if it doesn't exist.\n * @return {!Object>} Map of\n * listeners by event type.\n */\nfunction getListenerMap(target, opt_create) {\n let listenerMap = target.ol_lm;\n if (!listenerMap && opt_create) {\n listenerMap = target.ol_lm = {};\n }\n return listenerMap;\n}\n\n\n/**\n * Remove the listener map from a target.\n * @param {Object} target Target.\n */\nfunction removeListenerMap(target) {\n delete target.ol_lm;\n}\n\n\n/**\n * Clean up all listener objects of the given type. All properties on the\n * listener objects will be removed, and if no listeners remain in the listener\n * map, it will be removed from the target.\n * @param {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @param {string} type Type.\n */\nfunction removeListeners(target, type) {\n const listeners = getListeners(target, type);\n if (listeners) {\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n /** @type {import(\"./events/Target.js\").default} */ (target).\n removeEventListener(type, listeners[i].boundListener);\n clear(listeners[i]);\n }\n listeners.length = 0;\n const listenerMap = getListenerMap(target);\n if (listenerMap) {\n delete listenerMap[type];\n if (Object.keys(listenerMap).length === 0) {\n removeListenerMap(target);\n }\n }\n }\n}\n\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n const listenerMap = getListenerMap(target, true);\n let listeners = listenerMap[type];\n if (!listeners) {\n listeners = listenerMap[type] = [];\n }\n let listenerObj = findListener(listeners, listener, opt_this, false);\n if (listenerObj) {\n if (!opt_once) {\n // Turn one-off listener into a permanent one.\n listenerObj.callOnce = false;\n }\n } else {\n listenerObj = /** @type {EventsKey} */ ({\n bindTo: opt_this,\n callOnce: !!opt_once,\n listener: listener,\n target: target,\n type: type\n });\n /** @type {import(\"./events/Target.js\").default} */ (target).\n addEventListener(type, bindListener(listenerObj));\n listeners.push(listenerObj);\n }\n\n return listenerObj;\n}\n\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n\n\n/**\n * Unregisters an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * To return a listener, this function needs to be called with the exact same\n * arguments that were used for a previous {@link module:ol/events~listen} call.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n */\nexport function unlisten(target, type, listener, opt_this) {\n const listeners = getListeners(target, type);\n if (listeners) {\n const listenerObj = findListener(listeners, listener, opt_this, true);\n if (listenerObj) {\n unlistenByKey(listenerObj);\n }\n }\n}\n\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n /** @type {import(\"./events/Target.js\").default} */ (key.target).\n removeEventListener(key.type, key.boundListener);\n const listeners = getListeners(key.target, key.type);\n if (listeners) {\n const i = 'deleteIndex' in key ? key.deleteIndex : listeners.indexOf(key);\n if (i !== -1) {\n listeners.splice(i, 1);\n }\n if (listeners.length === 0) {\n removeListeners(key.target, key.type);\n }\n }\n clear(key);\n }\n}\n\n\n/**\n * Unregisters all event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Target.\n */\nexport function unlistenAll(target) {\n const listenerMap = getListenerMap(target);\n if (listenerMap) {\n for (const type in listenerMap) {\n removeListeners(target, type);\n }\n }\n}\n","/**\n * @module ol/functions\n */\n\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() {}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass Event {\n\n /**\n * @param {string} type Type.\n */\n constructor(type) {\n\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n preventDefault() {\n this.propagationStopped = true;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n\n}\n\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\n\nexport default Event;\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport {unlistenAll} from '../events.js';\nimport {VOID} from '../functions.js';\nimport Event from './Event.js';\n\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nclass Target extends Disposable {\n constructor() {\n\n super();\n\n /**\n * @private\n * @type {!Object}\n */\n this.pendingRemovals_ = {};\n\n /**\n * @private\n * @type {!Object}\n */\n this.dispatching_ = {};\n\n /**\n * @private\n * @type {!Object>}\n */\n this.listeners_ = {};\n\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n addEventListener(type, listener) {\n let listeners = this.listeners_[type];\n if (!listeners) {\n listeners = this.listeners_[type] = [];\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n }\n\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {{type: string,\n * target: (EventTargetLike|undefined),\n * propagationStopped: (boolean|undefined)}|\n * import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n dispatchEvent(event) {\n const evt = typeof event === 'string' ? new Event(event) : event;\n const type = evt.type;\n evt.target = this;\n const listeners = this.listeners_[type];\n let propagate;\n if (listeners) {\n if (!(type in this.dispatching_)) {\n this.dispatching_[type] = 0;\n this.pendingRemovals_[type] = 0;\n }\n ++this.dispatching_[type];\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n if (listeners[i].call(this, evt) === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --this.dispatching_[type];\n if (this.dispatching_[type] === 0) {\n let pendingRemovals = this.pendingRemovals_[type];\n delete this.pendingRemovals_[type];\n while (pendingRemovals--) {\n this.removeEventListener(type, VOID);\n }\n delete this.dispatching_[type];\n }\n return propagate;\n }\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n unlistenAll(this);\n }\n\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array} Listeners.\n */\n getListeners(type) {\n return this.listeners_[type];\n }\n\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n hasListener(opt_type) {\n return opt_type ?\n opt_type in this.listeners_ :\n Object.keys(this.listeners_).length > 0;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners_[type];\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n } else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n}\n\n\nexport default Target;\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~Event#change\n * @api\n */\n CHANGE: 'change',\n\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n ERROR: 'error',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n MOUSEDOWN: 'mousedown',\n MOUSEMOVE: 'mousemove',\n MOUSEOUT: 'mouseout',\n MOUSEUP: 'mouseup',\n MOUSEWHEEL: 'mousewheel',\n MSPOINTERDOWN: 'MSPointerDown',\n RESIZE: 'resize',\n TOUCHSTART: 'touchstart',\n TOUCHMOVE: 'touchmove',\n TOUCHEND: 'touchend',\n WHEEL: 'wheel'\n};\n","/**\n * @module ol/Tile\n */\nimport TileState from './TileState.js';\nimport {easeIn} from './easing.js';\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\n\n\n/**\n * A function that takes an {@link module:ol/Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * var xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * var data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string)} LoadFunction\n * @api\n */\n\n/**\n * {@link module:ol/source/Tile~Tile} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @api\n */\n\n\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nclass Tile extends EventTarget {\n\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {TileState} state State.\n * @param {Options=} opt_options Tile options.\n */\n constructor(tileCoord, state, opt_options) {\n super();\n\n const options = opt_options ? opt_options : {};\n\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n this.tileCoord = tileCoord;\n\n /**\n * @protected\n * @type {TileState}\n */\n this.state = state;\n\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile}\n */\n this.interimTile = null;\n\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n this.key = '';\n\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n this.transition_ = options.transition === undefined ? 250 : options.transition;\n\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n this.transitionStarts_ = {};\n\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * @return {string} Key.\n */\n getKey() {\n return this.key + '/' + this.tileCoord;\n }\n\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n getInterimTile() {\n if (!this.interimTile) {\n //empty chain\n return this;\n }\n let tile = this.interimTile;\n\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n\n // we can not find a better tile\n return this;\n }\n\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n refreshInterimChain() {\n if (!this.interimTile) {\n return;\n }\n\n let tile = this.interimTile;\n let prev = /** @type {Tile} */ (this);\n\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n } else if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n } else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n } else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n }\n\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n getTileCoord() {\n return this.tileCoord;\n }\n\n /**\n * @return {TileState} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {TileState} state State.\n * @api\n */\n setState(state) {\n this.state = state;\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n load() {}\n\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n getAlpha(id, time) {\n if (!this.transition_) {\n return 1;\n }\n\n let start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n } else if (start === -1) {\n return 1;\n }\n\n const delta = time - start + (1000 / 60); // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n }\n\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n inTransition(id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n }\n\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n endTransition(id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n }\n}\n\n\nexport default Tile;\n","/**\n * @module ol/dom\n */\n\n\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height) {\n const canvas = /** @type {HTMLCanvasElement} */ (document.createElement('canvas'));\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d'));\n}\n\n\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n return width;\n}\n\n\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n let height = element.offsetHeight;\n const style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n\n return height;\n}\n\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n const parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n","/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {listenOnce, unlistenByKey} from './events.js';\nimport EventType from './events/EventType.js';\n\n\nclass ImageTile extends Tile {\n\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {TileState} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options=} opt_options Tile options.\n */\n constructor(tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {\n\n super(tileCoord, state, opt_options);\n\n /**\n * @private\n * @type {?string}\n */\n this.crossOrigin_ = crossOrigin;\n\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {Array}\n */\n this.imageListenerKeys_ = null;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n if (this.state == TileState.LOADING) {\n this.unlistenImage_();\n this.image_ = getBlankImage();\n }\n if (this.interimTile) {\n this.interimTile.dispose();\n }\n this.state = TileState.ABORT;\n this.changed();\n super.disposeInternal();\n }\n\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * @inheritDoc\n */\n getKey() {\n return this.src_;\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n const image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n } else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * @inheritDoc\n * @api\n */\n load() {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.imageListenerKeys_ = [\n listenOnce(this.image_, EventType.ERROR,\n this.handleImageError_, this),\n listenOnce(this.image_, EventType.LOAD,\n this.handleImageLoad_, this)\n ];\n this.tileLoadFunction_(this, this.src_);\n }\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n this.imageListenerKeys_.forEach(unlistenByKey);\n this.imageListenerKeys_ = null;\n }\n}\n\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n const ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\n\nexport default ImageTile;\n","/**\n * @module ol/structs/LRUCache\n */\n\nimport {assert} from '../asserts.js';\nimport EventTarget from '../events/Target.js';\nimport EventType from '../events/EventType.js';\n\n\n/**\n * @typedef {Object} Entry\n * @property {string} key_\n * @property {Object} newer\n * @property {Object} older\n * @property {*} value_\n */\n\n\n/**\n * @classdesc\n * Implements a Least-Recently-Used cache where the keys do not conflict with\n * Object's properties (e.g. 'hasOwnProperty' is not allowed as a key). Expiring\n * items from the cache is the responsibility of the user.\n *\n * @fires import(\"../events/Event.js\").Event\n * @template T\n */\nclass LRUCache extends EventTarget {\n\n /**\n * @param {number=} opt_highWaterMark High water mark.\n */\n constructor(opt_highWaterMark) {\n\n super();\n\n /**\n * @type {number}\n */\n this.highWaterMark = opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;\n\n /**\n * @private\n * @type {number}\n */\n this.count_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.entries_ = {};\n\n /**\n * @private\n * @type {?Entry}\n */\n this.oldest_ = null;\n\n /**\n * @private\n * @type {?Entry}\n */\n this.newest_ = null;\n\n }\n\n\n /**\n * @return {boolean} Can expire cache.\n */\n canExpireCache() {\n return this.getCount() > this.highWaterMark;\n }\n\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.count_ = 0;\n this.entries_ = {};\n this.oldest_ = null;\n this.newest_ = null;\n this.dispatchEvent(EventType.CLEAR);\n }\n\n\n /**\n * @param {string} key Key.\n * @return {boolean} Contains key.\n */\n containsKey(key) {\n return this.entries_.hasOwnProperty(key);\n }\n\n\n /**\n * @param {function(this: S, T, string, LRUCache): ?} f The function\n * to call for every entry from the oldest to the newer. This function takes\n * 3 arguments (the entry value, the entry key and the LRUCache object).\n * The return value is ignored.\n * @param {S=} opt_this The object to use as `this` in `f`.\n * @template S\n */\n forEach(f, opt_this) {\n let entry = this.oldest_;\n while (entry) {\n f.call(opt_this, entry.value_, entry.key_, this);\n entry = entry.newer;\n }\n }\n\n\n /**\n * @param {string} key Key.\n * @return {T} Value.\n */\n get(key) {\n const entry = this.entries_[key];\n assert(entry !== undefined,\n 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n return entry.value_;\n } else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (this.oldest_.newer);\n this.oldest_.older = null;\n } else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n entry.newer = null;\n entry.older = this.newest_;\n this.newest_.newer = entry;\n this.newest_ = entry;\n return entry.value_;\n }\n\n\n /**\n * Remove an entry from the cache.\n * @param {string} key The entry key.\n * @return {T} The removed entry.\n */\n remove(key) {\n const entry = this.entries_[key];\n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n this.newest_ = /** @type {Entry} */ (entry.older);\n if (this.newest_) {\n this.newest_.newer = null;\n }\n } else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (this.oldest_) {\n this.oldest_.older = null;\n }\n } else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n delete this.entries_[key];\n --this.count_;\n return entry.value_;\n }\n\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.count_;\n }\n\n\n /**\n * @return {Array} Keys.\n */\n getKeys() {\n const keys = new Array(this.count_);\n let i = 0;\n let entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n keys[i++] = entry.key_;\n }\n return keys;\n }\n\n\n /**\n * @return {Array} Values.\n */\n getValues() {\n const values = new Array(this.count_);\n let i = 0;\n let entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n values[i++] = entry.value_;\n }\n return values;\n }\n\n\n /**\n * @return {T} Last value.\n */\n peekLast() {\n return this.oldest_.value_;\n }\n\n\n /**\n * @return {string} Last key.\n */\n peekLastKey() {\n return this.oldest_.key_;\n }\n\n\n /**\n * Get the key of the newest item in the cache. Throws if the cache is empty.\n * @return {string} The newest key.\n */\n peekFirstKey() {\n return this.newest_.key_;\n }\n\n\n /**\n * @return {T} value Value.\n */\n pop() {\n const entry = this.oldest_;\n delete this.entries_[entry.key_];\n if (entry.newer) {\n entry.newer.older = null;\n }\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (!this.oldest_) {\n this.newest_ = null;\n }\n --this.count_;\n return entry.value_;\n }\n\n\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n replace(key, value) {\n this.get(key); // update `newest_`\n this.entries_[key].value_ = value;\n }\n\n\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n set(key, value) {\n assert(!(key in this.entries_),\n 16); // Tried to set a value for a key that is used already\n const entry = /** @type {Entry} */ ({\n key_: key,\n newer: null,\n older: this.newest_,\n value_: value\n });\n if (!this.newest_) {\n this.oldest_ = entry;\n } else {\n this.newest_.newer = entry;\n }\n this.newest_ = entry;\n this.entries_[key] = entry;\n ++this.count_;\n }\n\n\n /**\n * Set a maximum number of entries for the cache.\n * @param {number} size Cache size.\n * @api\n */\n setSize(size) {\n this.highWaterMark = size;\n }\n\n\n /**\n * Prune the cache.\n */\n prune() {\n while (this.canExpireCache()) {\n this.pop();\n }\n }\n\n}\n\nexport default LRUCache;\n","/**\n * @module ol/tilecoord\n */\n\n\n/**\n * An array of three numbers representing the location of a tile in a tile\n * grid. The order is `z`, `x`, and `y`. `z` is the zoom level.\n * @typedef {Array} TileCoord\n * @api\n */\n\n\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {TileCoord=} opt_tileCoord Tile coordinate.\n * @return {TileCoord} Tile coordinate.\n */\nexport function createOrUpdate(z, x, y, opt_tileCoord) {\n if (opt_tileCoord !== undefined) {\n opt_tileCoord[0] = z;\n opt_tileCoord[1] = x;\n opt_tileCoord[2] = y;\n return opt_tileCoord;\n } else {\n return [z, x, y];\n }\n}\n\n\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {string} Key.\n */\nexport function getKeyZXY(z, x, y) {\n return z + '/' + x + '/' + y;\n}\n\n\n/**\n * Get the key for a tile coord.\n * @param {TileCoord} tileCoord The tile coord.\n * @return {string} Key.\n */\nexport function getKey(tileCoord) {\n return getKeyZXY(tileCoord[0], tileCoord[1], tileCoord[2]);\n}\n\n\n/**\n * Get a tile coord given a key.\n * @param {string} key The tile coord key.\n * @return {TileCoord} The tile coord.\n */\nexport function fromKey(key) {\n return key.split('/').map(Number);\n}\n\n\n/**\n * @param {TileCoord} tileCoord Tile coord.\n * @return {number} Hash.\n */\nexport function hash(tileCoord) {\n return (tileCoord[1] << tileCoord[0]) + tileCoord[2];\n}\n\n\n/**\n * @param {TileCoord} tileCoord Tile coord.\n * @return {string} Quad key.\n */\nexport function quadKey(tileCoord) {\n const z = tileCoord[0];\n const digits = new Array(z);\n let mask = 1 << (z - 1);\n let i, charCode;\n for (i = 0; i < z; ++i) {\n // 48 is charCode for 0 - '0'.charCodeAt(0)\n charCode = 48;\n if (tileCoord[1] & mask) {\n charCode += 1;\n }\n if (tileCoord[2] & mask) {\n charCode += 2;\n }\n digits[i] = String.fromCharCode(charCode);\n mask >>= 1;\n }\n return digits.join('');\n}\n\n\n/**\n * @param {TileCoord} tileCoord Tile coordinate.\n * @param {!import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {boolean} Tile coordinate is within extent and zoom level range.\n */\nexport function withinExtentAndZ(tileCoord, tileGrid) {\n const z = tileCoord[0];\n const x = tileCoord[1];\n const y = tileCoord[2];\n\n if (tileGrid.getMinZoom() > z || z > tileGrid.getMaxZoom()) {\n return false;\n }\n const extent = tileGrid.getExtent();\n let tileRange;\n if (!extent) {\n tileRange = tileGrid.getFullTileRange(z);\n } else {\n tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);\n }\n if (!tileRange) {\n return true;\n } else {\n return tileRange.containsXY(x, y);\n }\n}\n","/**\n * @module ol/TileCache\n */\nimport LRUCache from './structs/LRUCache.js';\nimport {fromKey, getKey} from './tilecoord.js';\n\nclass TileCache extends LRUCache {\n\n /**\n * @param {number=} opt_highWaterMark High water mark.\n */\n constructor(opt_highWaterMark) {\n\n super(opt_highWaterMark);\n\n }\n\n /**\n * @param {!Object} usedTiles Used tiles.\n */\n expireCache(usedTiles) {\n while (this.canExpireCache()) {\n const tile = this.peekLast();\n const zKey = tile.tileCoord[0].toString();\n if (zKey in usedTiles && usedTiles[zKey].contains(tile.tileCoord)) {\n break;\n } else {\n this.pop().dispose();\n }\n }\n }\n\n /**\n * Prune all tiles from the cache that don't have the same z as the newest tile.\n */\n pruneExceptNewestZ() {\n if (this.getCount() === 0) {\n return;\n }\n const key = this.peekFirstKey();\n const tileCoord = fromKey(key);\n const z = tileCoord[0];\n this.forEach(function(tile) {\n if (tile.tileCoord[0] !== z) {\n this.remove(getKey(tile.tileCoord));\n tile.dispose();\n }\n }, this);\n }\n}\n\n\nexport default TileCache;\n","/**\n * @module ol/reproj\n */\nimport {createCanvasContext2D} from './dom.js';\nimport {containsCoordinate, createEmpty, extend, getHeight, getTopLeft, getWidth} from './extent.js';\nimport {solveLinearSystem} from './math.js';\nimport {getPointResolution, transform} from './proj.js';\n\n\n/**\n * Calculates ideal resolution to use from the source in order to achieve\n * pixel mapping as close as possible to 1:1 during reprojection.\n * The resolution is calculated regardless of what resolutions\n * are actually available in the dataset (TileGrid, Image, ...).\n *\n * @param {import(\"./proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"./proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"./coordinate.js\").Coordinate} targetCenter Target center.\n * @param {number} targetResolution Target resolution.\n * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.\n */\nexport function calculateSourceResolution(sourceProj, targetProj,\n targetCenter, targetResolution) {\n\n const sourceCenter = transform(targetCenter, targetProj, sourceProj);\n\n // calculate the ideal resolution of the source data\n let sourceResolution = getPointResolution(targetProj, targetResolution, targetCenter);\n\n const targetMetersPerUnit = targetProj.getMetersPerUnit();\n if (targetMetersPerUnit !== undefined) {\n sourceResolution *= targetMetersPerUnit;\n }\n const sourceMetersPerUnit = sourceProj.getMetersPerUnit();\n if (sourceMetersPerUnit !== undefined) {\n sourceResolution /= sourceMetersPerUnit;\n }\n\n // Based on the projection properties, the point resolution at the specified\n // coordinates may be slightly different. We need to reverse-compensate this\n // in order to achieve optimal results.\n\n const sourceExtent = sourceProj.getExtent();\n if (!sourceExtent || containsCoordinate(sourceExtent, sourceCenter)) {\n const compensationFactor = getPointResolution(sourceProj, sourceResolution, sourceCenter) /\n sourceResolution;\n if (isFinite(compensationFactor) && compensationFactor > 0) {\n sourceResolution /= compensationFactor;\n }\n }\n\n return sourceResolution;\n}\n\n\n/**\n * Enlarge the clipping triangle point by 1 pixel to ensure the edges overlap\n * in order to mask gaps caused by antialiasing.\n *\n * @param {number} centroidX Centroid of the triangle (x coordinate in pixels).\n * @param {number} centroidY Centroid of the triangle (y coordinate in pixels).\n * @param {number} x X coordinate of the point (in pixels).\n * @param {number} y Y coordinate of the point (in pixels).\n * @return {import(\"./coordinate.js\").Coordinate} New point 1 px farther from the centroid.\n */\nfunction enlargeClipPoint(centroidX, centroidY, x, y) {\n const dX = x - centroidX;\n const dY = y - centroidY;\n const distance = Math.sqrt(dX * dX + dY * dY);\n return [Math.round(x + dX / distance), Math.round(y + dY / distance)];\n}\n\n\n/**\n * Renders the source data into new canvas based on the triangulation.\n *\n * @param {number} width Width of the canvas.\n * @param {number} height Height of the canvas.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} sourceResolution Source resolution.\n * @param {import(\"./extent.js\").Extent} sourceExtent Extent of the data source.\n * @param {number} targetResolution Target resolution.\n * @param {import(\"./extent.js\").Extent} targetExtent Target extent.\n * @param {import(\"./reproj/Triangulation.js\").default} triangulation\n * Calculated triangulation.\n * @param {Array<{extent: import(\"./extent.js\").Extent,\n * image: (HTMLCanvasElement|HTMLImageElement|HTMLVideoElement)}>} sources\n * Array of sources.\n * @param {number} gutter Gutter of the sources.\n * @param {boolean=} opt_renderEdges Render reprojection edges.\n * @return {HTMLCanvasElement} Canvas with reprojected data.\n */\nexport function render(width, height, pixelRatio,\n sourceResolution, sourceExtent, targetResolution, targetExtent,\n triangulation, sources, gutter, opt_renderEdges) {\n\n const context = createCanvasContext2D(Math.round(pixelRatio * width),\n Math.round(pixelRatio * height));\n\n if (sources.length === 0) {\n return context.canvas;\n }\n\n context.scale(pixelRatio, pixelRatio);\n\n const sourceDataExtent = createEmpty();\n sources.forEach(function(src, i, arr) {\n extend(sourceDataExtent, src.extent);\n });\n\n const canvasWidthInUnits = getWidth(sourceDataExtent);\n const canvasHeightInUnits = getHeight(sourceDataExtent);\n const stitchContext = createCanvasContext2D(\n Math.round(pixelRatio * canvasWidthInUnits / sourceResolution),\n Math.round(pixelRatio * canvasHeightInUnits / sourceResolution));\n\n const stitchScale = pixelRatio / sourceResolution;\n\n sources.forEach(function(src, i, arr) {\n const xPos = src.extent[0] - sourceDataExtent[0];\n const yPos = -(src.extent[3] - sourceDataExtent[3]);\n const srcWidth = getWidth(src.extent);\n const srcHeight = getHeight(src.extent);\n\n stitchContext.drawImage(\n src.image,\n gutter, gutter,\n src.image.width - 2 * gutter, src.image.height - 2 * gutter,\n xPos * stitchScale, yPos * stitchScale,\n srcWidth * stitchScale, srcHeight * stitchScale);\n });\n\n const targetTopLeft = getTopLeft(targetExtent);\n\n triangulation.getTriangles().forEach(function(triangle, i, arr) {\n /* Calculate affine transform (src -> dst)\n * Resulting matrix can be used to transform coordinate\n * from `sourceProjection` to destination pixels.\n *\n * To optimize number of context calls and increase numerical stability,\n * we also do the following operations:\n * trans(-topLeftExtentCorner), scale(1 / targetResolution), scale(1, -1)\n * here before solving the linear system so [ui, vi] are pixel coordinates.\n *\n * Src points: xi, yi\n * Dst points: ui, vi\n * Affine coefficients: aij\n *\n * | x0 y0 1 0 0 0 | |a00| |u0|\n * | x1 y1 1 0 0 0 | |a01| |u1|\n * | x2 y2 1 0 0 0 | x |a02| = |u2|\n * | 0 0 0 x0 y0 1 | |a10| |v0|\n * | 0 0 0 x1 y1 1 | |a11| |v1|\n * | 0 0 0 x2 y2 1 | |a12| |v2|\n */\n const source = triangle.source;\n const target = triangle.target;\n let x0 = source[0][0], y0 = source[0][1];\n let x1 = source[1][0], y1 = source[1][1];\n let x2 = source[2][0], y2 = source[2][1];\n const u0 = (target[0][0] - targetTopLeft[0]) / targetResolution;\n const v0 = -(target[0][1] - targetTopLeft[1]) / targetResolution;\n const u1 = (target[1][0] - targetTopLeft[0]) / targetResolution;\n const v1 = -(target[1][1] - targetTopLeft[1]) / targetResolution;\n const u2 = (target[2][0] - targetTopLeft[0]) / targetResolution;\n const v2 = -(target[2][1] - targetTopLeft[1]) / targetResolution;\n\n // Shift all the source points to improve numerical stability\n // of all the subsequent calculations. The [x0, y0] is used here.\n // This is also used to simplify the linear system.\n const sourceNumericalShiftX = x0;\n const sourceNumericalShiftY = y0;\n x0 = 0;\n y0 = 0;\n x1 -= sourceNumericalShiftX;\n y1 -= sourceNumericalShiftY;\n x2 -= sourceNumericalShiftX;\n y2 -= sourceNumericalShiftY;\n\n const augmentedMatrix = [\n [x1, y1, 0, 0, u1 - u0],\n [x2, y2, 0, 0, u2 - u0],\n [0, 0, x1, y1, v1 - v0],\n [0, 0, x2, y2, v2 - v0]\n ];\n const affineCoefs = solveLinearSystem(augmentedMatrix);\n if (!affineCoefs) {\n return;\n }\n\n context.save();\n context.beginPath();\n const centroidX = (u0 + u1 + u2) / 3;\n const centroidY = (v0 + v1 + v2) / 3;\n const p0 = enlargeClipPoint(centroidX, centroidY, u0, v0);\n const p1 = enlargeClipPoint(centroidX, centroidY, u1, v1);\n const p2 = enlargeClipPoint(centroidX, centroidY, u2, v2);\n\n context.moveTo(p1[0], p1[1]);\n context.lineTo(p0[0], p0[1]);\n context.lineTo(p2[0], p2[1]);\n context.clip();\n\n context.transform(\n affineCoefs[0], affineCoefs[2], affineCoefs[1], affineCoefs[3], u0, v0);\n\n context.translate(sourceDataExtent[0] - sourceNumericalShiftX,\n sourceDataExtent[3] - sourceNumericalShiftY);\n\n context.scale(sourceResolution / pixelRatio,\n -sourceResolution / pixelRatio);\n\n context.drawImage(stitchContext.canvas, 0, 0);\n context.restore();\n });\n\n if (opt_renderEdges) {\n context.save();\n\n context.strokeStyle = 'black';\n context.lineWidth = 1;\n\n triangulation.getTriangles().forEach(function(triangle, i, arr) {\n const target = triangle.target;\n const u0 = (target[0][0] - targetTopLeft[0]) / targetResolution;\n const v0 = -(target[0][1] - targetTopLeft[1]) / targetResolution;\n const u1 = (target[1][0] - targetTopLeft[0]) / targetResolution;\n const v1 = -(target[1][1] - targetTopLeft[1]) / targetResolution;\n const u2 = (target[2][0] - targetTopLeft[0]) / targetResolution;\n const v2 = -(target[2][1] - targetTopLeft[1]) / targetResolution;\n\n context.beginPath();\n context.moveTo(u1, v1);\n context.lineTo(u0, v0);\n context.lineTo(u2, v2);\n context.closePath();\n context.stroke();\n });\n\n context.restore();\n }\n return context.canvas;\n}\n","/**\n * @module ol/reproj/Triangulation\n */\nimport {boundingExtent, createEmpty, extendCoordinate, getBottomLeft, getBottomRight,\n getTopLeft, getTopRight, getWidth, intersects} from '../extent.js';\nimport {modulo} from '../math.js';\nimport {getTransform} from '../proj.js';\n\n\n/**\n * Single triangle; consists of 3 source points and 3 target points.\n * @typedef {Object} Triangle\n * @property {Array} source\n * @property {Array} target\n */\n\n\n/**\n * Maximum number of subdivision steps during raster reprojection triangulation.\n * Prevents high memory usage and large number of proj4 calls (for certain\n * transformations and areas). At most `2*(2^this)` triangles are created for\n * each triangulated extent (tile/image).\n * @type {number}\n */\nconst MAX_SUBDIVISION = 10;\n\n\n/**\n * Maximum allowed size of triangle relative to world width. When transforming\n * corners of world extent between certain projections, the resulting\n * triangulation seems to have zero error and no subdivision is performed. If\n * the triangle width is more than this (relative to world width; 0-1),\n * subdivison is forced (up to `MAX_SUBDIVISION`). Default is `0.25`.\n * @type {number}\n */\nconst MAX_TRIANGLE_WIDTH = 0.25;\n\n\n/**\n * @classdesc\n * Class containing triangulation of the given target extent.\n * Used for determining source data and the reprojection itself.\n */\nclass Triangulation {\n\n /**\n * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"../extent.js\").Extent} targetExtent Target extent to triangulate.\n * @param {import(\"../extent.js\").Extent} maxSourceExtent Maximal source extent that can be used.\n * @param {number} errorThreshold Acceptable error (in source units).\n */\n constructor(sourceProj, targetProj, targetExtent, maxSourceExtent, errorThreshold) {\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n * @private\n */\n this.sourceProj_ = sourceProj;\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n * @private\n */\n this.targetProj_ = targetProj;\n\n /** @type {!Object} */\n let transformInvCache = {};\n const transformInv = getTransform(this.targetProj_, this.sourceProj_);\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} c A coordinate.\n * @return {import(\"../coordinate.js\").Coordinate} Transformed coordinate.\n * @private\n */\n this.transformInv_ = function(c) {\n const key = c[0] + '/' + c[1];\n if (!transformInvCache[key]) {\n transformInvCache[key] = transformInv(c);\n }\n return transformInvCache[key];\n };\n\n /**\n * @type {import(\"../extent.js\").Extent}\n * @private\n */\n this.maxSourceExtent_ = maxSourceExtent;\n\n /**\n * @type {number}\n * @private\n */\n this.errorThresholdSquared_ = errorThreshold * errorThreshold;\n\n /**\n * @type {Array}\n * @private\n */\n this.triangles_ = [];\n\n /**\n * Indicates that the triangulation crosses edge of the source projection.\n * @type {boolean}\n * @private\n */\n this.wrapsXInSource_ = false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.canWrapXInSource_ = this.sourceProj_.canWrapX() &&\n !!maxSourceExtent &&\n !!this.sourceProj_.getExtent() &&\n (getWidth(maxSourceExtent) == getWidth(this.sourceProj_.getExtent()));\n\n /**\n * @type {?number}\n * @private\n */\n this.sourceWorldWidth_ = this.sourceProj_.getExtent() ?\n getWidth(this.sourceProj_.getExtent()) : null;\n\n /**\n * @type {?number}\n * @private\n */\n this.targetWorldWidth_ = this.targetProj_.getExtent() ?\n getWidth(this.targetProj_.getExtent()) : null;\n\n const destinationTopLeft = getTopLeft(targetExtent);\n const destinationTopRight = getTopRight(targetExtent);\n const destinationBottomRight = getBottomRight(targetExtent);\n const destinationBottomLeft = getBottomLeft(targetExtent);\n const sourceTopLeft = this.transformInv_(destinationTopLeft);\n const sourceTopRight = this.transformInv_(destinationTopRight);\n const sourceBottomRight = this.transformInv_(destinationBottomRight);\n const sourceBottomLeft = this.transformInv_(destinationBottomLeft);\n\n this.addQuad_(\n destinationTopLeft, destinationTopRight,\n destinationBottomRight, destinationBottomLeft,\n sourceTopLeft, sourceTopRight, sourceBottomRight, sourceBottomLeft,\n MAX_SUBDIVISION);\n\n if (this.wrapsXInSource_) {\n let leftBound = Infinity;\n this.triangles_.forEach(function(triangle, i, arr) {\n leftBound = Math.min(leftBound,\n triangle.source[0][0], triangle.source[1][0], triangle.source[2][0]);\n });\n\n // Shift triangles to be as close to `leftBound` as possible\n // (if the distance is more than `worldWidth / 2` it can be closer.\n this.triangles_.forEach(function(triangle) {\n if (Math.max(triangle.source[0][0], triangle.source[1][0],\n triangle.source[2][0]) - leftBound > this.sourceWorldWidth_ / 2) {\n const newTriangle = [[triangle.source[0][0], triangle.source[0][1]],\n [triangle.source[1][0], triangle.source[1][1]],\n [triangle.source[2][0], triangle.source[2][1]]];\n if ((newTriangle[0][0] - leftBound) > this.sourceWorldWidth_ / 2) {\n newTriangle[0][0] -= this.sourceWorldWidth_;\n }\n if ((newTriangle[1][0] - leftBound) > this.sourceWorldWidth_ / 2) {\n newTriangle[1][0] -= this.sourceWorldWidth_;\n }\n if ((newTriangle[2][0] - leftBound) > this.sourceWorldWidth_ / 2) {\n newTriangle[2][0] -= this.sourceWorldWidth_;\n }\n\n // Rarely (if the extent contains both the dateline and prime meridian)\n // the shift can in turn break some triangles.\n // Detect this here and don't shift in such cases.\n const minX = Math.min(\n newTriangle[0][0], newTriangle[1][0], newTriangle[2][0]);\n const maxX = Math.max(\n newTriangle[0][0], newTriangle[1][0], newTriangle[2][0]);\n if ((maxX - minX) < this.sourceWorldWidth_ / 2) {\n triangle.source = newTriangle;\n }\n }\n }.bind(this));\n }\n\n transformInvCache = {};\n }\n\n /**\n * Adds triangle to the triangulation.\n * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n * @private\n */\n addTriangle_(a, b, c, aSrc, bSrc, cSrc) {\n this.triangles_.push({\n source: [aSrc, bSrc, cSrc],\n target: [a, b, c]\n });\n }\n\n /**\n * Adds quad (points in clock-wise order) to the triangulation\n * (and reprojects the vertices) if valid.\n * Performs quad subdivision if needed to increase precision.\n *\n * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} d The target d coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} dSrc The source d coordinate.\n * @param {number} maxSubdivision Maximal allowed subdivision of the quad.\n * @private\n */\n addQuad_(a, b, c, d, aSrc, bSrc, cSrc, dSrc, maxSubdivision) {\n\n const sourceQuadExtent = boundingExtent([aSrc, bSrc, cSrc, dSrc]);\n const sourceCoverageX = this.sourceWorldWidth_ ?\n getWidth(sourceQuadExtent) / this.sourceWorldWidth_ : null;\n const sourceWorldWidth = /** @type {number} */ (this.sourceWorldWidth_);\n\n // when the quad is wrapped in the source projection\n // it covers most of the projection extent, but not fully\n const wrapsX = this.sourceProj_.canWrapX() &&\n sourceCoverageX > 0.5 && sourceCoverageX < 1;\n\n let needsSubdivision = false;\n\n if (maxSubdivision > 0) {\n if (this.targetProj_.isGlobal() && this.targetWorldWidth_) {\n const targetQuadExtent = boundingExtent([a, b, c, d]);\n const targetCoverageX = getWidth(targetQuadExtent) / this.targetWorldWidth_;\n needsSubdivision = targetCoverageX > MAX_TRIANGLE_WIDTH ||\n needsSubdivision;\n }\n if (!wrapsX && this.sourceProj_.isGlobal() && sourceCoverageX) {\n needsSubdivision = sourceCoverageX > MAX_TRIANGLE_WIDTH ||\n needsSubdivision;\n }\n }\n\n if (!needsSubdivision && this.maxSourceExtent_) {\n if (!intersects(sourceQuadExtent, this.maxSourceExtent_)) {\n // whole quad outside source projection extent -> ignore\n return;\n }\n }\n\n if (!needsSubdivision) {\n if (!isFinite(aSrc[0]) || !isFinite(aSrc[1]) ||\n !isFinite(bSrc[0]) || !isFinite(bSrc[1]) ||\n !isFinite(cSrc[0]) || !isFinite(cSrc[1]) ||\n !isFinite(dSrc[0]) || !isFinite(dSrc[1])) {\n if (maxSubdivision > 0) {\n needsSubdivision = true;\n } else {\n return;\n }\n }\n }\n\n if (maxSubdivision > 0) {\n if (!needsSubdivision) {\n const center = [(a[0] + c[0]) / 2, (a[1] + c[1]) / 2];\n const centerSrc = this.transformInv_(center);\n\n let dx;\n if (wrapsX) {\n const centerSrcEstimX =\n (modulo(aSrc[0], sourceWorldWidth) +\n modulo(cSrc[0], sourceWorldWidth)) / 2;\n dx = centerSrcEstimX -\n modulo(centerSrc[0], sourceWorldWidth);\n } else {\n dx = (aSrc[0] + cSrc[0]) / 2 - centerSrc[0];\n }\n const dy = (aSrc[1] + cSrc[1]) / 2 - centerSrc[1];\n const centerSrcErrorSquared = dx * dx + dy * dy;\n needsSubdivision = centerSrcErrorSquared > this.errorThresholdSquared_;\n }\n if (needsSubdivision) {\n if (Math.abs(a[0] - c[0]) <= Math.abs(a[1] - c[1])) {\n // split horizontally (top & bottom)\n const bc = [(b[0] + c[0]) / 2, (b[1] + c[1]) / 2];\n const bcSrc = this.transformInv_(bc);\n const da = [(d[0] + a[0]) / 2, (d[1] + a[1]) / 2];\n const daSrc = this.transformInv_(da);\n\n this.addQuad_(\n a, b, bc, da, aSrc, bSrc, bcSrc, daSrc, maxSubdivision - 1);\n this.addQuad_(\n da, bc, c, d, daSrc, bcSrc, cSrc, dSrc, maxSubdivision - 1);\n } else {\n // split vertically (left & right)\n const ab = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n const abSrc = this.transformInv_(ab);\n const cd = [(c[0] + d[0]) / 2, (c[1] + d[1]) / 2];\n const cdSrc = this.transformInv_(cd);\n\n this.addQuad_(\n a, ab, cd, d, aSrc, abSrc, cdSrc, dSrc, maxSubdivision - 1);\n this.addQuad_(\n ab, b, c, cd, abSrc, bSrc, cSrc, cdSrc, maxSubdivision - 1);\n }\n return;\n }\n }\n\n if (wrapsX) {\n if (!this.canWrapXInSource_) {\n return;\n }\n this.wrapsXInSource_ = true;\n }\n\n this.addTriangle_(a, c, d, aSrc, cSrc, dSrc);\n this.addTriangle_(a, b, c, aSrc, bSrc, cSrc);\n }\n\n /**\n * Calculates extent of the 'source' coordinates from all the triangles.\n *\n * @return {import(\"../extent.js\").Extent} Calculated extent.\n */\n calculateSourceExtent() {\n const extent = createEmpty();\n\n this.triangles_.forEach(function(triangle, i, arr) {\n const src = triangle.source;\n extendCoordinate(extent, src[0]);\n extendCoordinate(extent, src[1]);\n extendCoordinate(extent, src[2]);\n });\n\n return extent;\n }\n\n /**\n * @return {Array} Array of the calculated triangles.\n */\n getTriangles() {\n return this.triangles_;\n }\n}\n\nexport default Triangulation;\n","/**\n * @module ol/reproj/Tile\n */\nimport {ERROR_THRESHOLD} from './common.js';\n\nimport Tile from '../Tile.js';\nimport TileState from '../TileState.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {getArea, getCenter, getIntersection} from '../extent.js';\nimport {clamp} from '../math.js';\nimport {calculateSourceResolution, render as renderReprojected} from '../reproj.js';\nimport Triangulation from './Triangulation.js';\n\n\n/**\n * @typedef {function(number, number, number, number) : import(\"../Tile.js\").default} FunctionType\n */\n\n\n/**\n * @classdesc\n * Class encapsulating single reprojected tile.\n * See {@link module:ol/source/TileImage~TileImage}.\n *\n */\nclass ReprojTile extends Tile {\n /**\n * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"../tilegrid/TileGrid.js\").default} sourceTileGrid Source tile grid.\n * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"../tilegrid/TileGrid.js\").default} targetTileGrid Target tile grid.\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Coordinate of the tile.\n * @param {import(\"../tilecoord.js\").TileCoord} wrappedTileCoord Coordinate of the tile wrapped in X.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} gutter Gutter of the source tiles.\n * @param {FunctionType} getTileFunction\n * Function returning source tiles (z, x, y, pixelRatio).\n * @param {number=} opt_errorThreshold Acceptable reprojection error (in px).\n * @param {boolean=} opt_renderEdges Render reprojection edges.\n */\n constructor(\n sourceProj,\n sourceTileGrid,\n targetProj,\n targetTileGrid,\n tileCoord,\n wrappedTileCoord,\n pixelRatio,\n gutter,\n getTileFunction,\n opt_errorThreshold,\n opt_renderEdges\n ) {\n super(tileCoord, TileState.IDLE);\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderEdges_ = opt_renderEdges !== undefined ? opt_renderEdges : false;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = pixelRatio;\n\n /**\n * @private\n * @type {number}\n */\n this.gutter_ = gutter;\n\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n this.canvas_ = null;\n\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.sourceTileGrid_ = sourceTileGrid;\n\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.targetTileGrid_ = targetTileGrid;\n\n /**\n * @private\n * @type {import(\"../tilecoord.js\").TileCoord}\n */\n this.wrappedTileCoord_ = wrappedTileCoord ? wrappedTileCoord : tileCoord;\n\n /**\n * @private\n * @type {!Array}\n */\n this.sourceTiles_ = [];\n\n /**\n * @private\n * @type {Array}\n */\n this.sourcesListenerKeys_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.sourceZ_ = 0;\n\n const targetExtent = targetTileGrid.getTileCoordExtent(this.wrappedTileCoord_);\n const maxTargetExtent = this.targetTileGrid_.getExtent();\n let maxSourceExtent = this.sourceTileGrid_.getExtent();\n\n const limitedTargetExtent = maxTargetExtent ?\n getIntersection(targetExtent, maxTargetExtent) : targetExtent;\n\n if (getArea(limitedTargetExtent) === 0) {\n // Tile is completely outside range -> EMPTY\n // TODO: is it actually correct that the source even creates the tile ?\n this.state = TileState.EMPTY;\n return;\n }\n\n const sourceProjExtent = sourceProj.getExtent();\n if (sourceProjExtent) {\n if (!maxSourceExtent) {\n maxSourceExtent = sourceProjExtent;\n } else {\n maxSourceExtent = getIntersection(maxSourceExtent, sourceProjExtent);\n }\n }\n\n const targetResolution = targetTileGrid.getResolution(\n this.wrappedTileCoord_[0]);\n\n const targetCenter = getCenter(limitedTargetExtent);\n const sourceResolution = calculateSourceResolution(\n sourceProj, targetProj, targetCenter, targetResolution);\n\n if (!isFinite(sourceResolution) || sourceResolution <= 0) {\n // invalid sourceResolution -> EMPTY\n // probably edges of the projections when no extent is defined\n this.state = TileState.EMPTY;\n return;\n }\n\n const errorThresholdInPixels = opt_errorThreshold !== undefined ?\n opt_errorThreshold : ERROR_THRESHOLD;\n\n /**\n * @private\n * @type {!import(\"./Triangulation.js\").default}\n */\n this.triangulation_ = new Triangulation(\n sourceProj, targetProj, limitedTargetExtent, maxSourceExtent,\n sourceResolution * errorThresholdInPixels);\n\n if (this.triangulation_.getTriangles().length === 0) {\n // no valid triangles -> EMPTY\n this.state = TileState.EMPTY;\n return;\n }\n\n this.sourceZ_ = sourceTileGrid.getZForResolution(sourceResolution);\n let sourceExtent = this.triangulation_.calculateSourceExtent();\n\n if (maxSourceExtent) {\n if (sourceProj.canWrapX()) {\n sourceExtent[1] = clamp(\n sourceExtent[1], maxSourceExtent[1], maxSourceExtent[3]);\n sourceExtent[3] = clamp(\n sourceExtent[3], maxSourceExtent[1], maxSourceExtent[3]);\n } else {\n sourceExtent = getIntersection(sourceExtent, maxSourceExtent);\n }\n }\n\n if (!getArea(sourceExtent)) {\n this.state = TileState.EMPTY;\n } else {\n const sourceRange = sourceTileGrid.getTileRangeForExtentAndZ(\n sourceExtent, this.sourceZ_);\n\n for (let srcX = sourceRange.minX; srcX <= sourceRange.maxX; srcX++) {\n for (let srcY = sourceRange.minY; srcY <= sourceRange.maxY; srcY++) {\n const tile = getTileFunction(this.sourceZ_, srcX, srcY, pixelRatio);\n if (tile) {\n this.sourceTiles_.push(tile);\n }\n }\n }\n\n if (this.sourceTiles_.length === 0) {\n this.state = TileState.EMPTY;\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n if (this.state == TileState.LOADING) {\n this.unlistenSources_();\n }\n super.disposeInternal();\n }\n\n /**\n * Get the HTML Canvas element for this tile.\n * @return {HTMLCanvasElement} Canvas.\n */\n getImage() {\n return this.canvas_;\n }\n\n /**\n * @private\n */\n reproject_() {\n const sources = [];\n this.sourceTiles_.forEach(function(tile, i, arr) {\n if (tile && tile.getState() == TileState.LOADED) {\n sources.push({\n extent: this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord),\n image: tile.getImage()\n });\n }\n }.bind(this));\n this.sourceTiles_.length = 0;\n\n if (sources.length === 0) {\n this.state = TileState.ERROR;\n } else {\n const z = this.wrappedTileCoord_[0];\n const size = this.targetTileGrid_.getTileSize(z);\n const width = typeof size === 'number' ? size : size[0];\n const height = typeof size === 'number' ? size : size[1];\n const targetResolution = this.targetTileGrid_.getResolution(z);\n const sourceResolution = this.sourceTileGrid_.getResolution(this.sourceZ_);\n\n const targetExtent = this.targetTileGrid_.getTileCoordExtent(\n this.wrappedTileCoord_);\n this.canvas_ = renderReprojected(width, height, this.pixelRatio_,\n sourceResolution, this.sourceTileGrid_.getExtent(),\n targetResolution, targetExtent, this.triangulation_, sources,\n this.gutter_, this.renderEdges_);\n\n this.state = TileState.LOADED;\n }\n this.changed();\n }\n\n /**\n * @inheritDoc\n */\n load() {\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n\n let leftToLoad = 0;\n\n this.sourcesListenerKeys_ = [];\n this.sourceTiles_.forEach(function(tile, i, arr) {\n const state = tile.getState();\n if (state == TileState.IDLE || state == TileState.LOADING) {\n leftToLoad++;\n\n const sourceListenKey = listen(tile, EventType.CHANGE,\n function(e) {\n const state = tile.getState();\n if (state == TileState.LOADED ||\n state == TileState.ERROR ||\n state == TileState.EMPTY) {\n unlistenByKey(sourceListenKey);\n leftToLoad--;\n if (leftToLoad === 0) {\n this.unlistenSources_();\n this.reproject_();\n }\n }\n }, this);\n this.sourcesListenerKeys_.push(sourceListenKey);\n }\n }.bind(this));\n\n this.sourceTiles_.forEach(function(tile, i, arr) {\n const state = tile.getState();\n if (state == TileState.IDLE) {\n tile.load();\n }\n });\n\n if (leftToLoad === 0) {\n setTimeout(this.reproject_.bind(this), 0);\n }\n }\n }\n\n /**\n * @private\n */\n unlistenSources_() {\n this.sourcesListenerKeys_.forEach(unlistenByKey);\n this.sourcesListenerKeys_ = null;\n }\n}\n\n\nexport default ReprojTile;\n","/**\n * @module ol/tileurlfunction\n */\nimport {assert} from './asserts.js';\nimport {modulo} from './math.js';\nimport {hash as tileCoordHash} from './tilecoord.js';\n\n\n/**\n * @param {string} template Template.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplate(template, tileGrid) {\n const zRegEx = /\\{z\\}/g;\n const xRegEx = /\\{x\\}/g;\n const yRegEx = /\\{y\\}/g;\n const dashYRegEx = /\\{-y\\}/g;\n return (\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\n function(tileCoord, pixelRatio, projection) {\n if (!tileCoord) {\n return undefined;\n } else {\n return template.replace(zRegEx, tileCoord[0].toString())\n .replace(xRegEx, tileCoord[1].toString())\n .replace(yRegEx, function() {\n const y = -tileCoord[2] - 1;\n return y.toString();\n })\n .replace(dashYRegEx, function() {\n const z = tileCoord[0];\n const range = tileGrid.getFullTileRange(z);\n assert(range, 55); // The {-y} placeholder requires a tile grid with extent\n const y = range.getHeight() + tileCoord[2];\n return y.toString();\n });\n }\n }\n );\n}\n\n\n/**\n * @param {Array} templates Templates.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplates(templates, tileGrid) {\n const len = templates.length;\n const tileUrlFunctions = new Array(len);\n for (let i = 0; i < len; ++i) {\n tileUrlFunctions[i] = createFromTemplate(templates[i], tileGrid);\n }\n return createFromTileUrlFunctions(tileUrlFunctions);\n}\n\n\n/**\n * @param {Array} tileUrlFunctions Tile URL Functions.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTileUrlFunctions(tileUrlFunctions) {\n if (tileUrlFunctions.length === 1) {\n return tileUrlFunctions[0];\n }\n return (\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\n function(tileCoord, pixelRatio, projection) {\n if (!tileCoord) {\n return undefined;\n } else {\n const h = tileCoordHash(tileCoord);\n const index = modulo(h, tileUrlFunctions.length);\n return tileUrlFunctions[index](tileCoord, pixelRatio, projection);\n }\n }\n );\n}\n\n\n/**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\nexport function nullTileUrlFunction(tileCoord, pixelRatio, projection) {\n return undefined;\n}\n\n\n/**\n * @param {string} url URL.\n * @return {Array} Array of urls.\n */\nexport function expandUrl(url) {\n const urls = [];\n let match = /\\{([a-z])-([a-z])\\}/.exec(url);\n if (match) {\n // char range\n const startCharCode = match[1].charCodeAt(0);\n const stopCharCode = match[2].charCodeAt(0);\n let charCode;\n for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {\n urls.push(url.replace(match[0], String.fromCharCode(charCode)));\n }\n return urls;\n }\n match = match = /\\{(\\d+)-(\\d+)\\}/.exec(url);\n if (match) {\n // number range\n const stop = parseInt(match[2], 10);\n for (let i = parseInt(match[1], 10); i <= stop; i++) {\n urls.push(url.replace(match[0], i.toString()));\n }\n return urls;\n }\n urls.push(url);\n return urls;\n}\n","/**\n * @module ol/size\n */\n\n\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n\n\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n\n\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n\n\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n\n\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n } else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n } else {\n opt_size[0] = opt_size[1] = /** @type {number} */ (size);\n }\n return opt_size;\n }\n}\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange'\n};\n","/**\n * @module ol/Observable\n */\nimport {listen, unlistenByKey, unlisten, listenOnce} from './events.js';\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").Event\n * @api\n */\nclass Observable extends EventTarget {\n constructor() {\n\n super();\n\n /**\n * @private\n * @type {number}\n */\n this.revision_ = 0;\n\n }\n\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n changed() {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n getRevision() {\n return this.revision_;\n }\n\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n on(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n } else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n }\n\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n once(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listenOnce(this, type[i], listener);\n }\n return keys;\n } else {\n return listenOnce(this, /** @type {string} */ (type), listener);\n }\n }\n\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n un(type, listener) {\n if (Array.isArray(type)) {\n for (let i = 0, ii = type.length; i < ii; ++i) {\n unlisten(this, type[i], listener);\n }\n return;\n } else {\n unlisten(this, /** @type {string} */ (type), listener);\n }\n }\n}\n\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (let i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n } else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\n\n\nexport default Observable;\n","/**\n * @module ol/Object\n */\nimport {getUid} from './util.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport Event from './events/Event.js';\nimport {assign} from './obj.js';\n\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\n\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n constructor(type, key, oldValue) {\n super(type);\n\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n this.key = key;\n\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n this.oldValue = oldValue;\n\n }\n\n}\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nclass BaseObject extends Observable {\n\n /**\n * @param {Object=} opt_values An object with key-value pairs.\n */\n constructor(opt_values) {\n super();\n\n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(this);\n\n /**\n * @private\n * @type {!Object}\n */\n this.values_ = {};\n\n if (opt_values !== undefined) {\n this.setProperties(opt_values);\n }\n }\n\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n get(key) {\n let value;\n if (this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n }\n\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n getKeys() {\n return Object.keys(this.values_);\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n getProperties() {\n return assign({}, this.values_);\n }\n\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n notify(key, oldValue) {\n let eventType;\n eventType = getChangeEventType(key);\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n set(key, value, opt_silent) {\n if (opt_silent) {\n this.values_[key] = value;\n } else {\n const oldValue = this.values_[key];\n this.values_[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n }\n\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n setProperties(values, opt_silent) {\n for (const key in values) {\n this.set(key, values[key], opt_silent);\n }\n }\n\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean=} opt_silent Unset without triggering an event.\n * @api\n */\n unset(key, opt_silent) {\n if (key in this.values_) {\n const oldValue = this.values_[key];\n delete this.values_[key];\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n }\n}\n\n\n/**\n * @type {Object}\n */\nconst changeEventTypeCache = {};\n\n\n/**\n * @param {string} key Key name.\n * @return {string} Change name.\n */\nexport function getChangeEventType(key) {\n return changeEventTypeCache.hasOwnProperty(key) ?\n changeEventTypeCache[key] :\n (changeEventTypeCache[key] = 'change:' + key);\n}\n\n\nexport default BaseObject;\n","/**\n * @module ol/source/State\n */\n\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error'\n};\n","/**\n * @module ol/source/Source\n */\nimport {abstract} from '../util.js';\nimport BaseObject from '../Object.js';\nimport {get as getProjection} from '../proj.js';\nimport SourceState from './State.js';\n\n\n/**\n * A function that returns a string or an array of strings representing source\n * attributions.\n *\n * @typedef {function(import(\"../PluggableMap.js\").FrameState): (string|Array)} Attribution\n */\n\n\n/**\n * A type that can be used to provide attribution information for data sources.\n *\n * It represents either\n * * a simple string (e.g. `'© Acme Inc.'`)\n * * an array of simple strings (e.g. `['© Acme Inc.', '© Bacme Inc.']`)\n * * a function that returns a string or array of strings (`{@link module:ol/source/Source~Attribution}`)\n *\n * @typedef {string|Array|Attribution} AttributionLike\n */\n\n\n/**\n * @typedef {Object} Options\n * @property {AttributionLike} [attributions]\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {import(\"../proj.js\").ProjectionLike} projection\n * @property {SourceState} [state='ready']\n * @property {boolean} [wrapX=false]\n */\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for {@link module:ol/layer/Layer~Layer} sources.\n *\n * A generic `change` event is triggered when the state of the source changes.\n * @abstract\n * @api\n */\nclass Source extends BaseObject {\n /**\n * @param {Options} options Source options.\n */\n constructor(options) {\n\n super();\n\n /**\n * @private\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.projection_ = getProjection(options.projection);\n\n /**\n * @private\n * @type {?Attribution}\n */\n this.attributions_ = adaptAttributions(options.attributions);\n\n /**\n * @private\n * @type {boolean}\n */\n this.attributionsCollapsible_ = options.attributionsCollapsible !== undefined ?\n options.attributionsCollapsible : true;\n\n /**\n * This source is currently loading data. Sources that defer loading to the\n * map's tile queue never set this to `true`.\n * @type {boolean}\n */\n this.loading = false;\n\n /**\n * @private\n * @type {SourceState}\n */\n this.state_ = options.state !== undefined ?\n options.state : SourceState.READY;\n\n /**\n * @private\n * @type {boolean}\n */\n this.wrapX_ = options.wrapX !== undefined ? options.wrapX : false;\n\n }\n\n /**\n * Get the attribution function for the source.\n * @return {?Attribution} Attribution function.\n */\n getAttributions() {\n return this.attributions_;\n }\n\n /**\n * @return {boolean} Aattributions are collapsible.\n */\n getAttributionsCollapsible() {\n return this.attributionsCollapsible_;\n }\n\n /**\n * Get the projection of the source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n getProjection() {\n return this.projection_;\n }\n\n /**\n * @abstract\n * @return {Array|undefined} Resolutions.\n */\n getResolutions() {\n return abstract();\n }\n\n /**\n * Get the state of the source, see {@link module:ol/source/State~State} for possible states.\n * @return {SourceState} State.\n * @api\n */\n getState() {\n return this.state_;\n }\n\n /**\n * @return {boolean|undefined} Wrap X.\n */\n getWrapX() {\n return this.wrapX_;\n }\n\n /**\n * Refreshes the source and finally dispatches a 'change' event.\n * @api\n */\n refresh() {\n this.changed();\n }\n\n /**\n * Set the attributions of the source.\n * @param {AttributionLike|undefined} attributions Attributions.\n * Can be passed as `string`, `Array`, `{@link module:ol/source/Source~Attribution}`,\n * or `undefined`.\n * @api\n */\n setAttributions(attributions) {\n this.attributions_ = adaptAttributions(attributions);\n this.changed();\n }\n\n /**\n * Set the state of the source.\n * @param {SourceState} state State.\n * @protected\n */\n setState(state) {\n this.state_ = state;\n this.changed();\n }\n}\n\n\n/**\n * Turns the attributions option into an attributions function.\n * @param {AttributionLike|undefined} attributionLike The attribution option.\n * @return {?Attribution} An attribution function (or null).\n */\nfunction adaptAttributions(attributionLike) {\n if (!attributionLike) {\n return null;\n }\n if (Array.isArray(attributionLike)) {\n return function(frameState) {\n return attributionLike;\n };\n }\n\n if (typeof attributionLike === 'function') {\n return attributionLike;\n }\n\n return function(frameState) {\n return [attributionLike];\n };\n}\n\n\nexport default Source;\n","/**\n * @module ol/tilegrid/common\n */\n\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport const DEFAULT_MAX_ZOOM = 42;\n\n/**\n * Default tile size.\n * @type {number}\n */\nexport const DEFAULT_TILE_SIZE = 256;\n","/**\n * @module ol/TileRange\n */\n\n/**\n * A representation of a contiguous block of tiles. A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nclass TileRange {\n\n /**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n */\n constructor(minX, maxX, minY, maxY) {\n\n /**\n * @type {number}\n */\n this.minX = minX;\n\n /**\n * @type {number}\n */\n this.maxX = maxX;\n\n /**\n * @type {number}\n */\n this.minY = minY;\n\n /**\n * @type {number}\n */\n this.maxY = maxY;\n\n }\n\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {boolean} Contains tile coordinate.\n */\n contains(tileCoord) {\n return this.containsXY(tileCoord[1], tileCoord[2]);\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Contains.\n */\n containsTileRange(tileRange) {\n return this.minX <= tileRange.minX && tileRange.maxX <= this.maxX &&\n this.minY <= tileRange.minY && tileRange.maxY <= this.maxY;\n }\n\n /**\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @return {boolean} Contains coordinate.\n */\n containsXY(x, y) {\n return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Equals.\n */\n equals(tileRange) {\n return this.minX == tileRange.minX && this.minY == tileRange.minY &&\n this.maxX == tileRange.maxX && this.maxY == tileRange.maxY;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n */\n extend(tileRange) {\n if (tileRange.minX < this.minX) {\n this.minX = tileRange.minX;\n }\n if (tileRange.maxX > this.maxX) {\n this.maxX = tileRange.maxX;\n }\n if (tileRange.minY < this.minY) {\n this.minY = tileRange.minY;\n }\n if (tileRange.maxY > this.maxY) {\n this.maxY = tileRange.maxY;\n }\n }\n\n /**\n * @return {number} Height.\n */\n getHeight() {\n return this.maxY - this.minY + 1;\n }\n\n /**\n * @return {import(\"./size.js\").Size} Size.\n */\n getSize() {\n return [this.getWidth(), this.getHeight()];\n }\n\n /**\n * @return {number} Width.\n */\n getWidth() {\n return this.maxX - this.minX + 1;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Intersects.\n */\n intersects(tileRange) {\n return this.minX <= tileRange.maxX &&\n this.maxX >= tileRange.minX &&\n this.minY <= tileRange.maxY &&\n this.maxY >= tileRange.minY;\n }\n}\n\n\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange=} tileRange TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n if (tileRange !== undefined) {\n tileRange.minX = minX;\n tileRange.maxX = maxX;\n tileRange.minY = minY;\n tileRange.maxY = maxY;\n return tileRange;\n } else {\n return new TileRange(minX, maxX, minY, maxY);\n }\n}\n\n\nexport default TileRange;\n","/**\n * @module ol/array\n */\n\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n let mid, cmp;\n const comparator = opt_comparator || numberSafeCompareFunction;\n let low = 0;\n let high = haystack.length;\n let found = false;\n\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + (high - low >> 1);\n cmp = +comparator(haystack[mid], needle);\n\n if (cmp < 0.0) { /* Too low. */\n low = mid + 1;\n\n } else { /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n\n /* Key not found. */\n return found ? low : ~low;\n}\n\n\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n\n\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n const n = arr.length;\n if (arr[0] <= target) {\n return 0;\n } else if (target <= arr[n - 1]) {\n return n - 1;\n } else {\n let i;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n } else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n } else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n } else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n } else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n\n\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n const tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n\n\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n const extension = Array.isArray(data) ? data : [data];\n const length = extension.length;\n for (let i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n\n\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n const i = arr.indexOf(obj);\n const found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n\n\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n const length = arr.length >>> 0;\n let value;\n\n for (let i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n\n\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n const len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (let i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\n\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n const length = arr.length;\n const tmp = Array(arr.length);\n let i;\n for (i = 0; i < length; i++) {\n tmp[i] = {index: i, value: arr[i]};\n }\n tmp.sort(function(a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n\n\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n let index;\n const found = !arr.every(function(el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n const compare = opt_func || numberSafeCompareFunction;\n return arr.every(function(currentVal, index) {\n if (index === 0) {\n return true;\n }\n const res = compare(arr[index - 1], currentVal);\n return !(res > 0 || opt_strict && res === 0);\n });\n}\n","/**\n * @module ol/tilegrid/TileGrid\n */\nimport {DEFAULT_TILE_SIZE} from './common.js';\nimport {assert} from '../asserts.js';\nimport TileRange, {createOrUpdate as createOrUpdateTileRange} from '../TileRange.js';\nimport {isSorted, linearFindNearest} from '../array.js';\nimport {createOrUpdate, getTopLeft} from '../extent.js';\nimport {clamp} from '../math.js';\nimport {toSize} from '../size.js';\nimport {createOrUpdate as createOrUpdateTileCoord} from '../tilecoord.js';\n\n\n/**\n * @private\n * @type {import(\"../tilecoord.js\").TileCoord}\n */\nconst tmpTileCoord = [0, 0, 0];\n\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../extent.js\").Extent} [extent] Extent for the tile grid. No tiles outside this\n * extent will be requested by {@link module:ol/source/Tile} sources. When no `origin` or\n * `origins` are configured, the `origin` will be set to the top-left corner of the extent.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {import(\"../coordinate.js\").Coordinate} [origin] The tile grid origin, i.e. where the `x`\n * and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase left to right and upwards. If not\n * specified, `extent` or `origins` must be provided.\n * @property {Array} [origins] Tile grid origins, i.e. where\n * the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * origin. Tile coordinates increase left to right and upwards. If not specified, `extent` or\n * `origin` must be provided.\n * @property {!Array} resolutions Resolutions. The array index of each resolution needs\n * to match the zoom level. This means that even if a `minZoom` is configured, the resolutions\n * array will have a length of `maxZoom + 1`.\n * @property {Array} [sizes] Sizes.\n * @property {number|import(\"../size.js\").Size} [tileSize] Tile size.\n * Default is `[256, 256]`.\n * @property {Array} [tileSizes] Tile sizes. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * tile size.\n */\n\n\n/**\n * @classdesc\n * Base class for setting the grid pattern for sources accessing tiled-image\n * servers.\n * @api\n */\nclass TileGrid {\n /**\n * @param {Options} options Tile grid options.\n */\n constructor(options) {\n\n /**\n * @protected\n * @type {number}\n */\n this.minZoom = options.minZoom !== undefined ? options.minZoom : 0;\n\n /**\n * @private\n * @type {!Array}\n */\n this.resolutions_ = options.resolutions;\n assert(isSorted(this.resolutions_, function(a, b) {\n return b - a;\n }, true), 17); // `resolutions` must be sorted in descending order\n\n\n // check if we've got a consistent zoom factor and origin\n let zoomFactor;\n if (!options.origins) {\n for (let i = 0, ii = this.resolutions_.length - 1; i < ii; ++i) {\n if (!zoomFactor) {\n zoomFactor = this.resolutions_[i] / this.resolutions_[i + 1];\n } else {\n if (this.resolutions_[i] / this.resolutions_[i + 1] !== zoomFactor) {\n zoomFactor = undefined;\n break;\n }\n }\n }\n }\n\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.zoomFactor_ = zoomFactor;\n\n\n /**\n * @protected\n * @type {number}\n */\n this.maxZoom = this.resolutions_.length - 1;\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.origin_ = options.origin !== undefined ? options.origin : null;\n\n /**\n * @private\n * @type {Array}\n */\n this.origins_ = null;\n if (options.origins !== undefined) {\n this.origins_ = options.origins;\n assert(this.origins_.length == this.resolutions_.length,\n 20); // Number of `origins` and `resolutions` must be equal\n }\n\n const extent = options.extent;\n\n if (extent !== undefined &&\n !this.origin_ && !this.origins_) {\n this.origin_ = getTopLeft(extent);\n }\n\n assert(\n (!this.origin_ && this.origins_) || (this.origin_ && !this.origins_),\n 18); // Either `origin` or `origins` must be configured, never both\n\n /**\n * @private\n * @type {Array}\n */\n this.tileSizes_ = null;\n if (options.tileSizes !== undefined) {\n this.tileSizes_ = options.tileSizes;\n assert(this.tileSizes_.length == this.resolutions_.length,\n 19); // Number of `tileSizes` and `resolutions` must be equal\n }\n\n /**\n * @private\n * @type {number|import(\"../size.js\").Size}\n */\n this.tileSize_ = options.tileSize !== undefined ?\n options.tileSize :\n !this.tileSizes_ ? DEFAULT_TILE_SIZE : null;\n assert(\n (!this.tileSize_ && this.tileSizes_) ||\n (this.tileSize_ && !this.tileSizes_),\n 22); // Either `tileSize` or `tileSizes` must be configured, never both\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = extent !== undefined ? extent : null;\n\n\n /**\n * @private\n * @type {Array}\n */\n this.fullTileRanges_ = null;\n\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n this.tmpSize_ = [0, 0];\n\n if (options.sizes !== undefined) {\n this.fullTileRanges_ = options.sizes.map(function(size, z) {\n const tileRange = new TileRange(\n Math.min(0, size[0]), Math.max(size[0] - 1, -1),\n Math.min(0, size[1]), Math.max(size[1] - 1, -1));\n return tileRange;\n }, this);\n } else if (extent) {\n this.calculateTileRanges_(extent);\n }\n\n }\n\n /**\n * Call a function with each tile coordinate for a given extent and zoom level.\n *\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} zoom Integer zoom level.\n * @param {function(import(\"../tilecoord.js\").TileCoord)} callback Function called with each tile coordinate.\n * @api\n */\n forEachTileCoord(extent, zoom, callback) {\n const tileRange = this.getTileRangeForExtentAndZ(extent, zoom);\n for (let i = tileRange.minX, ii = tileRange.maxX; i <= ii; ++i) {\n for (let j = tileRange.minY, jj = tileRange.maxY; j <= jj; ++j) {\n callback([zoom, i, j]);\n }\n }\n }\n\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {function(this: T, number, import(\"../TileRange.js\").default): boolean} callback Callback.\n * @param {T=} opt_this The object to use as `this` in `callback`.\n * @param {import(\"../TileRange.js\").default=} opt_tileRange Temporary import(\"../TileRange.js\").default object.\n * @param {import(\"../extent.js\").Extent=} opt_extent Temporary import(\"../extent.js\").Extent object.\n * @return {boolean} Callback succeeded.\n * @template T\n */\n forEachTileCoordParentTileRange(tileCoord, callback, opt_this, opt_tileRange, opt_extent) {\n let tileRange, x, y;\n let tileCoordExtent = null;\n let z = tileCoord[0] - 1;\n if (this.zoomFactor_ === 2) {\n x = tileCoord[1];\n y = tileCoord[2];\n } else {\n tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent);\n }\n while (z >= this.minZoom) {\n if (this.zoomFactor_ === 2) {\n x = Math.floor(x / 2);\n y = Math.floor(y / 2);\n tileRange = createOrUpdateTileRange(x, x, y, y, opt_tileRange);\n } else {\n tileRange = this.getTileRangeForExtentAndZ(tileCoordExtent, z, opt_tileRange);\n }\n if (callback.call(opt_this, z, tileRange)) {\n return true;\n }\n --z;\n }\n return false;\n }\n\n /**\n * Get the extent for this tile grid, if it was configured.\n * @return {import(\"../extent.js\").Extent} Extent.\n */\n getExtent() {\n return this.extent_;\n }\n\n /**\n * Get the maximum zoom level for the grid.\n * @return {number} Max zoom.\n * @api\n */\n getMaxZoom() {\n return this.maxZoom;\n }\n\n /**\n * Get the minimum zoom level for the grid.\n * @return {number} Min zoom.\n * @api\n */\n getMinZoom() {\n return this.minZoom;\n }\n\n /**\n * Get the origin for the grid at the given zoom level.\n * @param {number} z Integer zoom level.\n * @return {import(\"../coordinate.js\").Coordinate} Origin.\n * @api\n */\n getOrigin(z) {\n if (this.origin_) {\n return this.origin_;\n } else {\n return this.origins_[z];\n }\n }\n\n /**\n * Get the resolution for the given zoom level.\n * @param {number} z Integer zoom level.\n * @return {number} Resolution.\n * @api\n */\n getResolution(z) {\n return this.resolutions_[z];\n }\n\n /**\n * Get the list of resolutions for the tile grid.\n * @return {Array} Resolutions.\n * @api\n */\n getResolutions() {\n return this.resolutions_;\n }\n\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"../TileRange.js\").default=} opt_tileRange Temporary import(\"../TileRange.js\").default object.\n * @param {import(\"../extent.js\").Extent=} opt_extent Temporary import(\"../extent.js\").Extent object.\n * @return {import(\"../TileRange.js\").default} Tile range.\n */\n getTileCoordChildTileRange(tileCoord, opt_tileRange, opt_extent) {\n if (tileCoord[0] < this.maxZoom) {\n if (this.zoomFactor_ === 2) {\n const minX = tileCoord[1] * 2;\n const minY = tileCoord[2] * 2;\n return createOrUpdateTileRange(minX, minX + 1, minY, minY + 1, opt_tileRange);\n }\n const tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent);\n return this.getTileRangeForExtentAndZ(\n tileCoordExtent, tileCoord[0] + 1, opt_tileRange);\n }\n return null;\n }\n\n /**\n * Get the extent for a tile range.\n * @param {number} z Integer zoom level.\n * @param {import(\"../TileRange.js\").default} tileRange Tile range.\n * @param {import(\"../extent.js\").Extent=} opt_extent Temporary import(\"../extent.js\").Extent object.\n * @return {import(\"../extent.js\").Extent} Extent.\n */\n getTileRangeExtent(z, tileRange, opt_extent) {\n const origin = this.getOrigin(z);\n const resolution = this.getResolution(z);\n const tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n const minX = origin[0] + tileRange.minX * tileSize[0] * resolution;\n const maxX = origin[0] + (tileRange.maxX + 1) * tileSize[0] * resolution;\n const minY = origin[1] + tileRange.minY * tileSize[1] * resolution;\n const maxY = origin[1] + (tileRange.maxY + 1) * tileSize[1] * resolution;\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n }\n\n /**\n * Get a tile range for the given extent and integer zoom level.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} z Integer zoom level.\n * @param {import(\"../TileRange.js\").default=} opt_tileRange Temporary tile range object.\n * @return {import(\"../TileRange.js\").default} Tile range.\n */\n getTileRangeForExtentAndZ(extent, z, opt_tileRange) {\n const tileCoord = tmpTileCoord;\n this.getTileCoordForXYAndZ_(extent[0], extent[1], z, false, tileCoord);\n const minX = tileCoord[1];\n const minY = tileCoord[2];\n this.getTileCoordForXYAndZ_(extent[2], extent[3], z, true, tileCoord);\n return createOrUpdateTileRange(minX, tileCoord[1], minY, tileCoord[2], opt_tileRange);\n }\n\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {import(\"../coordinate.js\").Coordinate} Tile center.\n */\n getTileCoordCenter(tileCoord) {\n const origin = this.getOrigin(tileCoord[0]);\n const resolution = this.getResolution(tileCoord[0]);\n const tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n return [\n origin[0] + (tileCoord[1] + 0.5) * tileSize[0] * resolution,\n origin[1] + (tileCoord[2] + 0.5) * tileSize[1] * resolution\n ];\n }\n\n /**\n * Get the extent of a tile coordinate.\n *\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"../extent.js\").Extent=} opt_extent Temporary extent object.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n getTileCoordExtent(tileCoord, opt_extent) {\n const origin = this.getOrigin(tileCoord[0]);\n const resolution = this.getResolution(tileCoord[0]);\n const tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n const minX = origin[0] + tileCoord[1] * tileSize[0] * resolution;\n const minY = origin[1] + tileCoord[2] * tileSize[1] * resolution;\n const maxX = minX + tileSize[0] * resolution;\n const maxY = minY + tileSize[1] * resolution;\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n }\n\n /**\n * Get the tile coordinate for the given map coordinate and resolution. This\n * method considers that coordinates that intersect tile boundaries should be\n * assigned the higher tile coordinate.\n *\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} resolution Resolution.\n * @param {import(\"../tilecoord.js\").TileCoord=} opt_tileCoord Destination import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @api\n */\n getTileCoordForCoordAndResolution(coordinate, resolution, opt_tileCoord) {\n return this.getTileCoordForXYAndResolution_(\n coordinate[0], coordinate[1], resolution, false, opt_tileCoord);\n }\n\n /**\n * Note that this method should not be called for resolutions that correspond\n * to an integer zoom level. Instead call the `getTileCoordForXYAndZ_` method.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} resolution Resolution (for a non-integer zoom level).\n * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n * intersections go to the higher tile coordinate, let edge intersections\n * go to the lower tile coordinate.\n * @param {import(\"../tilecoord.js\").TileCoord=} opt_tileCoord Temporary import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @private\n */\n getTileCoordForXYAndResolution_(x, y, resolution, reverseIntersectionPolicy, opt_tileCoord) {\n const z = this.getZForResolution(resolution);\n const scale = resolution / this.getResolution(z);\n const origin = this.getOrigin(z);\n const tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n\n const adjustX = reverseIntersectionPolicy ? 0.5 : 0;\n const adjustY = reverseIntersectionPolicy ? 0 : 0.5;\n const xFromOrigin = Math.floor((x - origin[0]) / resolution + adjustX);\n const yFromOrigin = Math.floor((y - origin[1]) / resolution + adjustY);\n let tileCoordX = scale * xFromOrigin / tileSize[0];\n let tileCoordY = scale * yFromOrigin / tileSize[1];\n\n if (reverseIntersectionPolicy) {\n tileCoordX = Math.ceil(tileCoordX) - 1;\n tileCoordY = Math.ceil(tileCoordY) - 1;\n } else {\n tileCoordX = Math.floor(tileCoordX);\n tileCoordY = Math.floor(tileCoordY);\n }\n\n return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n }\n\n /**\n * Although there is repetition between this method and `getTileCoordForXYAndResolution_`,\n * they should have separate implementations. This method is for integer zoom\n * levels. The other method should only be called for resolutions corresponding\n * to non-integer zoom levels.\n * @param {number} x Map x coordinate.\n * @param {number} y Map y coordinate.\n * @param {number} z Integer zoom level.\n * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n * intersections go to the higher tile coordinate, let edge intersections\n * go to the lower tile coordinate.\n * @param {import(\"../tilecoord.js\").TileCoord=} opt_tileCoord Temporary import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @private\n */\n getTileCoordForXYAndZ_(x, y, z, reverseIntersectionPolicy, opt_tileCoord) {\n const origin = this.getOrigin(z);\n const resolution = this.getResolution(z);\n const tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n\n const adjustX = reverseIntersectionPolicy ? 0.5 : 0;\n const adjustY = reverseIntersectionPolicy ? 0 : 0.5;\n const xFromOrigin = Math.floor((x - origin[0]) / resolution + adjustX);\n const yFromOrigin = Math.floor((y - origin[1]) / resolution + adjustY);\n let tileCoordX = xFromOrigin / tileSize[0];\n let tileCoordY = yFromOrigin / tileSize[1];\n\n if (reverseIntersectionPolicy) {\n tileCoordX = Math.ceil(tileCoordX) - 1;\n tileCoordY = Math.ceil(tileCoordY) - 1;\n } else {\n tileCoordX = Math.floor(tileCoordX);\n tileCoordY = Math.floor(tileCoordY);\n }\n\n return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n }\n\n /**\n * Get a tile coordinate given a map coordinate and zoom level.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} z Zoom level.\n * @param {import(\"../tilecoord.js\").TileCoord=} opt_tileCoord Destination import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @api\n */\n getTileCoordForCoordAndZ(coordinate, z, opt_tileCoord) {\n return this.getTileCoordForXYAndZ_(\n coordinate[0], coordinate[1], z, false, opt_tileCoord);\n }\n\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {number} Tile resolution.\n */\n getTileCoordResolution(tileCoord) {\n return this.resolutions_[tileCoord[0]];\n }\n\n /**\n * Get the tile size for a zoom level. The type of the return value matches the\n * `tileSize` or `tileSizes` that the tile grid was configured with. To always\n * get an `import(\"../size.js\").Size`, run the result through `import(\"../size.js\").Size.toSize()`.\n * @param {number} z Z.\n * @return {number|import(\"../size.js\").Size} Tile size.\n * @api\n */\n getTileSize(z) {\n if (this.tileSize_) {\n return this.tileSize_;\n } else {\n return this.tileSizes_[z];\n }\n }\n\n /**\n * @param {number} z Zoom level.\n * @return {import(\"../TileRange.js\").default} Extent tile range for the specified zoom level.\n */\n getFullTileRange(z) {\n if (!this.fullTileRanges_) {\n return null;\n } else {\n return this.fullTileRanges_[z];\n }\n }\n\n /**\n * @param {number} resolution Resolution.\n * @param {number=} opt_direction If 0, the nearest resolution will be used.\n * If 1, the nearest lower resolution will be used. If -1, the nearest\n * higher resolution will be used. Default is 0.\n * @return {number} Z.\n * @api\n */\n getZForResolution(resolution, opt_direction) {\n const z = linearFindNearest(this.resolutions_, resolution, opt_direction || 0);\n return clamp(z, this.minZoom, this.maxZoom);\n }\n\n /**\n * @param {!import(\"../extent.js\").Extent} extent Extent for this tile grid.\n * @private\n */\n calculateTileRanges_(extent) {\n const length = this.resolutions_.length;\n const fullTileRanges = new Array(length);\n for (let z = this.minZoom; z < length; ++z) {\n fullTileRanges[z] = this.getTileRangeForExtentAndZ(extent, z);\n }\n this.fullTileRanges_ = fullTileRanges;\n }\n}\n\n\nexport default TileGrid;\n","/**\n * @module ol/tilegrid\n */\nimport {DEFAULT_MAX_ZOOM, DEFAULT_TILE_SIZE} from './tilegrid/common.js';\nimport {toSize} from './size.js';\nimport {containsCoordinate, createOrUpdate, getCorner, getHeight, getWidth} from './extent.js';\nimport Corner from './extent/Corner.js';\nimport {get as getProjection, METERS_PER_UNIT} from './proj.js';\nimport Units from './proj/Units.js';\nimport TileGrid from './tilegrid/TileGrid.js';\n\n\n/**\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {!TileGrid} Default tile grid for the\n * passed projection.\n */\nexport function getForProjection(projection) {\n let tileGrid = projection.getDefaultTileGrid();\n if (!tileGrid) {\n tileGrid = createForProjection(projection);\n projection.setDefaultTileGrid(tileGrid);\n }\n return tileGrid;\n}\n\n\n/**\n * @param {TileGrid} tileGrid Tile grid.\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {import(\"./tilecoord.js\").TileCoord} Tile coordinate.\n */\nexport function wrapX(tileGrid, tileCoord, projection) {\n const z = tileCoord[0];\n const center = tileGrid.getTileCoordCenter(tileCoord);\n const projectionExtent = extentFromProjection(projection);\n if (!containsCoordinate(projectionExtent, center)) {\n const worldWidth = getWidth(projectionExtent);\n const worldsAway = Math.ceil((projectionExtent[0] - center[0]) / worldWidth);\n center[0] += worldWidth * worldsAway;\n return tileGrid.getTileCoordForCoordAndZ(center, z);\n } else {\n return tileCoord;\n }\n}\n\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number=} opt_maxZoom Maximum zoom level (default is\n * DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size=} opt_tileSize Tile size (default uses\n * DEFAULT_TILE_SIZE).\n * @param {Corner=} opt_corner Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForExtent(extent, opt_maxZoom, opt_tileSize, opt_corner) {\n const corner = opt_corner !== undefined ? opt_corner : Corner.TOP_LEFT;\n\n const resolutions = resolutionsFromExtent(extent, opt_maxZoom, opt_tileSize);\n\n return new TileGrid({\n extent: extent,\n origin: getCorner(extent, corner),\n resolutions: resolutions,\n tileSize: opt_tileSize\n });\n}\n\n\n/**\n * @typedef {Object} XYZOptions\n * @property {import(\"./extent.js\").Extent} [extent] Extent for the tile grid. The origin for an XYZ tile grid is the\n * top-left corner of the extent. The zero level of the grid is defined by the resolution at which one tile fits in the\n * provided extent. If not provided, the extent of the EPSG:3857 projection is used.\n * @property {number} [maxZoom] Maximum zoom. The default is `42`. This determines the number of levels\n * in the grid set. For example, a `maxZoom` of 21 means there are 22 levels in the grid set.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {number|import(\"./size.js\").Size} [tileSize=[256, 256]] Tile size in pixels.\n */\n\n\n/**\n * Creates a tile grid with a standard XYZ tiling scheme.\n * @param {XYZOptions=} opt_options Tile grid options.\n * @return {!TileGrid} Tile grid instance.\n * @api\n */\nexport function createXYZ(opt_options) {\n /** @type {XYZOptions} */\n const xyzOptions = opt_options || {};\n\n const extent = xyzOptions.extent || getProjection('EPSG:3857').getExtent();\n\n /** @type {import(\"./tilegrid/TileGrid.js\").Options} */\n const gridOptions = {\n extent: extent,\n minZoom: xyzOptions.minZoom,\n tileSize: xyzOptions.tileSize,\n resolutions: resolutionsFromExtent(\n extent,\n xyzOptions.maxZoom,\n xyzOptions.tileSize\n )\n };\n return new TileGrid(gridOptions);\n}\n\n\n/**\n * Create a resolutions array from an extent. A zoom factor of 2 is assumed.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number=} opt_maxZoom Maximum zoom level (default is\n * DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size=} opt_tileSize Tile size (default uses\n * DEFAULT_TILE_SIZE).\n * @return {!Array} Resolutions array.\n */\nfunction resolutionsFromExtent(extent, opt_maxZoom, opt_tileSize) {\n const maxZoom = opt_maxZoom !== undefined ?\n opt_maxZoom : DEFAULT_MAX_ZOOM;\n\n const height = getHeight(extent);\n const width = getWidth(extent);\n\n const tileSize = toSize(opt_tileSize !== undefined ?\n opt_tileSize : DEFAULT_TILE_SIZE);\n const maxResolution = Math.max(\n width / tileSize[0], height / tileSize[1]);\n\n const length = maxZoom + 1;\n const resolutions = new Array(length);\n for (let z = 0; z < length; ++z) {\n resolutions[z] = maxResolution / Math.pow(2, z);\n }\n return resolutions;\n}\n\n\n/**\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @param {number=} opt_maxZoom Maximum zoom level (default is\n * DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size=} opt_tileSize Tile size (default uses\n * DEFAULT_TILE_SIZE).\n * @param {Corner=} opt_corner Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForProjection(projection, opt_maxZoom, opt_tileSize, opt_corner) {\n const extent = extentFromProjection(projection);\n return createForExtent(extent, opt_maxZoom, opt_tileSize, opt_corner);\n}\n\n\n/**\n * Generate a tile grid extent from a projection. If the projection has an\n * extent, it is used. If not, a global extent is assumed.\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\nexport function extentFromProjection(projection) {\n projection = getProjection(projection);\n let extent = projection.getExtent();\n if (!extent) {\n const half = 180 * METERS_PER_UNIT[Units.DEGREES] / projection.getMetersPerUnit();\n extent = createOrUpdate(-half, -half, half, half);\n }\n return extent;\n}\n","/**\n * @module ol/source/Tile\n */\nimport {abstract} from '../util.js';\nimport TileCache from '../TileCache.js';\nimport TileState from '../TileState.js';\nimport Event from '../events/Event.js';\nimport {equivalent} from '../proj.js';\nimport {toSize, scale as scaleSize} from '../size.js';\nimport Source from './Source.js';\nimport {getKeyZXY, withinExtentAndZ} from '../tilecoord.js';\nimport {wrapX, getForProjection as getTileGridForProjection} from '../tilegrid.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions]\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize]\n * @property {boolean} [opaque]\n * @property {number} [tilePixelRatio]\n * @property {import(\"../proj.js\").ProjectionLike} [projection]\n * @property {import(\"./State.js\").default} [state]\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid]\n * @property {boolean} [wrapX=true]\n * @property {number} [transition]\n * @property {string} [key]\n */\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for sources providing images divided into a tile grid.\n * @abstract\n * @api\n */\nclass TileSource extends Source {\n /**\n * @param {Options} options SourceTile source options.\n */\n constructor(options) {\n\n super({\n attributions: options.attributions,\n attributionsCollapsible: options.attributionsCollapsible,\n projection: options.projection,\n state: options.state,\n wrapX: options.wrapX\n });\n\n /**\n * @private\n * @type {boolean}\n */\n this.opaque_ = options.opaque !== undefined ? options.opaque : false;\n\n /**\n * @private\n * @type {number}\n */\n this.tilePixelRatio_ = options.tilePixelRatio !== undefined ?\n options.tilePixelRatio : 1;\n\n /**\n * @protected\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.tileGrid = options.tileGrid !== undefined ? options.tileGrid : null;\n\n /**\n * @protected\n * @type {import(\"../TileCache.js\").default}\n */\n this.tileCache = new TileCache(options.cacheSize);\n\n /**\n * @protected\n * @type {import(\"../size.js\").Size}\n */\n this.tmpSize = [0, 0];\n\n /**\n * @private\n * @type {string}\n */\n this.key_ = options.key || '';\n\n /**\n * @protected\n * @type {import(\"../Tile.js\").Options}\n */\n this.tileOptions = {transition: options.transition};\n\n }\n\n /**\n * @return {boolean} Can expire cache.\n */\n canExpireCache() {\n return this.tileCache.canExpireCache();\n }\n\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {!Object} usedTiles Used tiles.\n */\n expireCache(projection, usedTiles) {\n const tileCache = this.getTileCacheForProjection(projection);\n if (tileCache) {\n tileCache.expireCache(usedTiles);\n }\n }\n\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {number} z Zoom level.\n * @param {import(\"../TileRange.js\").default} tileRange Tile range.\n * @param {function(import(\"../Tile.js\").default):(boolean|void)} callback Called with each\n * loaded tile. If the callback returns `false`, the tile will not be\n * considered loaded.\n * @return {boolean} The tile range is fully covered with loaded tiles.\n */\n forEachLoadedTile(projection, z, tileRange, callback) {\n const tileCache = this.getTileCacheForProjection(projection);\n if (!tileCache) {\n return false;\n }\n\n let covered = true;\n let tile, tileCoordKey, loaded;\n for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n tileCoordKey = getKeyZXY(z, x, y);\n loaded = false;\n if (tileCache.containsKey(tileCoordKey)) {\n tile = /** @type {!import(\"../Tile.js\").default} */ (tileCache.get(tileCoordKey));\n loaded = tile.getState() === TileState.LOADED;\n if (loaded) {\n loaded = (callback(tile) !== false);\n }\n }\n if (!loaded) {\n covered = false;\n }\n }\n }\n return covered;\n }\n\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {number} Gutter.\n */\n getGutterForProjection(projection) {\n return 0;\n }\n\n /**\n * Return the key to be used for all tiles in the source.\n * @return {string} The key for all tiles.\n * @protected\n */\n getKey() {\n return this.key_;\n }\n\n /**\n * Set the value to be used as the key for all tiles in the source.\n * @param {string} key The key for tiles.\n * @protected\n */\n setKey(key) {\n if (this.key_ !== key) {\n this.key_ = key;\n this.changed();\n }\n }\n\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {boolean} Opaque.\n */\n getOpaque(projection) {\n return this.opaque_;\n }\n\n /**\n * @inheritDoc\n */\n getResolutions() {\n return this.tileGrid.getResolutions();\n }\n\n /**\n * @abstract\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!import(\"../Tile.js\").default} Tile.\n */\n getTile(z, x, y, pixelRatio, projection) {\n return abstract();\n }\n\n /**\n * Return the tile grid of the tile source.\n * @return {import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n * @api\n */\n getTileGrid() {\n return this.tileGrid;\n }\n\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n */\n getTileGridForProjection(projection) {\n if (!this.tileGrid) {\n return getTileGridForProjection(projection);\n } else {\n return this.tileGrid;\n }\n }\n\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {import(\"../TileCache.js\").default} Tile cache.\n * @protected\n */\n getTileCacheForProjection(projection) {\n const thisProj = this.getProjection();\n if (thisProj && !equivalent(thisProj, projection)) {\n return null;\n } else {\n return this.tileCache;\n }\n }\n\n /**\n * Get the tile pixel ratio for this source. Subclasses may override this\n * method, which is meant to return a supported pixel ratio that matches the\n * provided `pixelRatio` as close as possible.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Tile pixel ratio.\n */\n getTilePixelRatio(pixelRatio) {\n return this.tilePixelRatio_;\n }\n\n /**\n * @param {number} z Z.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {import(\"../size.js\").Size} Tile size.\n */\n getTilePixelSize(z, pixelRatio, projection) {\n const tileGrid = this.getTileGridForProjection(projection);\n const tilePixelRatio = this.getTilePixelRatio(pixelRatio);\n const tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);\n if (tilePixelRatio == 1) {\n return tileSize;\n } else {\n return scaleSize(tileSize, tilePixelRatio, this.tmpSize);\n }\n }\n\n /**\n * Returns a tile coordinate wrapped around the x-axis. When the tile coordinate\n * is outside the resolution and extent range of the tile grid, `null` will be\n * returned.\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"../proj/Projection.js\").default=} opt_projection Projection.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate to be passed to the tileUrlFunction or\n * null if no tile URL should be created for the passed `tileCoord`.\n */\n getTileCoordForTileUrlFunction(tileCoord, opt_projection) {\n const projection = opt_projection !== undefined ?\n opt_projection : this.getProjection();\n const tileGrid = this.getTileGridForProjection(projection);\n if (this.getWrapX() && projection.isGlobal()) {\n tileCoord = wrapX(tileGrid, tileCoord, projection);\n }\n return withinExtentAndZ(tileCoord, tileGrid) ? tileCoord : null;\n }\n\n /**\n * @inheritDoc\n */\n refresh() {\n this.tileCache.clear();\n this.changed();\n }\n\n /**\n * Marks a tile coord as being used, without triggering a load.\n * @abstract\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n */\n useTile(z, x, y, projection) {}\n\n}\n\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Tile~TileSource} instances are instances of this\n * type.\n */\nexport class TileSourceEvent extends Event {\n /**\n * @param {string} type Type.\n * @param {import(\"../Tile.js\").default} tile The tile.\n */\n constructor(type, tile) {\n\n super(type);\n\n /**\n * The tile related to the event.\n * @type {import(\"../Tile.js\").default}\n * @api\n */\n this.tile = tile;\n\n }\n\n}\n\nexport default TileSource;\n","/**\n * @module ol/source/TileEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n\n /**\n * Triggered when a tile starts loading.\n * @event module:ol/source/Tile.TileSourceEvent#tileloadstart\n * @api\n */\n TILELOADSTART: 'tileloadstart',\n\n /**\n * Triggered when a tile finishes loading, either when its data is loaded,\n * or when loading was aborted because the tile is no longer needed.\n * @event module:ol/source/Tile.TileSourceEvent#tileloadend\n * @api\n */\n TILELOADEND: 'tileloadend',\n\n /**\n * Triggered if tile loading results in an error.\n * @event module:ol/source/Tile.TileSourceEvent#tileloaderror\n * @api\n */\n TILELOADERROR: 'tileloaderror'\n\n};\n","/**\n * @module ol/source/UrlTile\n */\nimport {getUid} from '../util.js';\nimport TileState from '../TileState.js';\nimport {expandUrl, createFromTemplates, nullTileUrlFunction} from '../tileurlfunction.js';\nimport TileSource, {TileSourceEvent} from './Tile.js';\nimport TileEventType from './TileEventType.js';\nimport {getKeyZXY} from '../tilecoord.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions]\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize]\n * @property {boolean} [opaque]\n * @property {import(\"../proj.js\").ProjectionLike} [projection]\n * @property {import(\"./State.js\").default} [state]\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid]\n * @property {import(\"../Tile.js\").LoadFunction} tileLoadFunction\n * @property {number} [tilePixelRatio]\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction]\n * @property {string} [url]\n * @property {Array} [urls]\n * @property {boolean} [wrapX=true]\n * @property {number} [transition]\n * @property {string} [key]\n */\n\n\n/**\n * @classdesc\n * Base class for sources providing tiles divided into a tile grid over http.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n */\nclass UrlTile extends TileSource {\n /**\n * @param {Options} options Image tile options.\n */\n constructor(options) {\n\n super({\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n opaque: options.opaque,\n projection: options.projection,\n state: options.state,\n tileGrid: options.tileGrid,\n tilePixelRatio: options.tilePixelRatio,\n wrapX: options.wrapX,\n transition: options.transition,\n key: options.key,\n attributionsCollapsible: options.attributionsCollapsible\n });\n\n /**\n * @private\n * @type {boolean}\n */\n this.generateTileUrlFunction_ = !options.tileUrlFunction;\n\n /**\n * @protected\n * @type {import(\"../Tile.js\").LoadFunction}\n */\n this.tileLoadFunction = options.tileLoadFunction;\n\n /**\n * @protected\n * @type {import(\"../Tile.js\").UrlFunction}\n */\n this.tileUrlFunction = options.tileUrlFunction ? options.tileUrlFunction.bind(this) : nullTileUrlFunction;\n\n /**\n * @protected\n * @type {!Array|null}\n */\n this.urls = null;\n\n if (options.urls) {\n this.setUrls(options.urls);\n } else if (options.url) {\n this.setUrl(options.url);\n }\n\n if (options.tileUrlFunction) {\n this.setTileUrlFunction(options.tileUrlFunction, this.key_);\n }\n\n /**\n * @private\n * @type {!Object}\n */\n this.tileLoadingKeys_ = {};\n\n }\n\n /**\n * Return the tile load function of the source.\n * @return {import(\"../Tile.js\").LoadFunction} TileLoadFunction\n * @api\n */\n getTileLoadFunction() {\n return this.tileLoadFunction;\n }\n\n /**\n * Return the tile URL function of the source.\n * @return {import(\"../Tile.js\").UrlFunction} TileUrlFunction\n * @api\n */\n getTileUrlFunction() {\n return this.tileUrlFunction;\n }\n\n /**\n * Return the URLs used for this source.\n * When a tileUrlFunction is used instead of url or urls,\n * null will be returned.\n * @return {!Array|null} URLs.\n * @api\n */\n getUrls() {\n return this.urls;\n }\n\n /**\n * Handle tile change events.\n * @param {import(\"../events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"../Tile.js\").default} */ (event.target);\n const uid = getUid(tile);\n const tileState = tile.getState();\n let type;\n if (tileState == TileState.LOADING) {\n this.tileLoadingKeys_[uid] = true;\n type = TileEventType.TILELOADSTART;\n } else if (uid in this.tileLoadingKeys_) {\n delete this.tileLoadingKeys_[uid];\n type = tileState == TileState.ERROR ? TileEventType.TILELOADERROR :\n (tileState == TileState.LOADED || tileState == TileState.ABORT) ?\n TileEventType.TILELOADEND : undefined;\n }\n if (type != undefined) {\n this.dispatchEvent(new TileSourceEvent(type, tile));\n }\n }\n\n /**\n * Set the tile load function of the source.\n * @param {import(\"../Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @api\n */\n setTileLoadFunction(tileLoadFunction) {\n this.tileCache.clear();\n this.tileLoadFunction = tileLoadFunction;\n this.changed();\n }\n\n /**\n * Set the tile URL function of the source.\n * @param {import(\"../Tile.js\").UrlFunction} tileUrlFunction Tile URL function.\n * @param {string=} key Optional new tile key for the source.\n * @api\n */\n setTileUrlFunction(tileUrlFunction, key) {\n this.tileUrlFunction = tileUrlFunction;\n this.tileCache.pruneExceptNewestZ();\n if (typeof key !== 'undefined') {\n this.setKey(key);\n } else {\n this.changed();\n }\n }\n\n /**\n * Set the URL to use for requests.\n * @param {string} url URL.\n * @api\n */\n setUrl(url) {\n const urls = this.urls = expandUrl(url);\n this.setUrls(urls);\n }\n\n /**\n * Set the URLs to use for requests.\n * @param {Array} urls URLs.\n * @api\n */\n setUrls(urls) {\n this.urls = urls;\n const key = urls.join('\\n');\n if (this.generateTileUrlFunction_) {\n this.setTileUrlFunction(createFromTemplates(urls, this.tileGrid), key);\n } else {\n this.setKey(key);\n }\n }\n\n /**\n * @inheritDoc\n */\n useTile(z, x, y) {\n const tileCoordKey = getKeyZXY(z, x, y);\n if (this.tileCache.containsKey(tileCoordKey)) {\n this.tileCache.get(tileCoordKey);\n }\n }\n}\n\n\nexport default UrlTile;\n","/**\n * @module ol/source/TileImage\n */\nimport {ENABLE_RASTER_REPROJECTION} from '../reproj/common.js';\nimport {getUid} from '../util.js';\nimport ImageTile from '../ImageTile.js';\nimport TileCache from '../TileCache.js';\nimport TileState from '../TileState.js';\nimport {listen} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {equivalent, get as getProjection} from '../proj.js';\nimport ReprojTile from '../reproj/Tile.js';\nimport UrlTile from './UrlTile.js';\nimport {getKey, getKeyZXY} from '../tilecoord.js';\nimport {getForProjection as getTileGridForProjection} from '../tilegrid.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize=2048] Cache size.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that\n * you must provide a `crossOrigin` value if you are using the WebGL renderer or if you want to\n * access pixel data with the Canvas renderer. See\n * https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [opaque=true] Whether the layer is opaque.\n * @property {import(\"../proj.js\").ProjectionLike} projection Projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {import(\"./State.js\").default} [state] Source state.\n * @property {typeof import(\"../ImageTile.js\").default} [tileClass] Class used to instantiate image tiles.\n * Default is {@link module:ol/ImageTile~ImageTile}.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service. For example, if the tile\n * service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get tile URL given a tile coordinate and the projection.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may be\n * used instead of defining each one separately in the `urls` option.\n * @property {Array} [urls] An array of URL templates.\n * @property {boolean} [wrapX] Whether to wrap the world horizontally. The default, is to\n * request out-of-bounds tiles from the server. When set to `false`, only one\n * world will be rendered. When set to `true`, tiles will be requested for one\n * world only, but they will be wrapped horizontally to render multiple worlds.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {string} [key] Optional tile key for proper cache fetching\n */\n\n\n/**\n * @classdesc\n * Base class for sources providing images divided into a tile grid.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n * @api\n */\nclass TileImage extends UrlTile {\n /**\n * @param {!Options} options Image tile options.\n */\n constructor(options) {\n\n super({\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n opaque: options.opaque,\n projection: options.projection,\n state: options.state,\n tileGrid: options.tileGrid,\n tileLoadFunction: options.tileLoadFunction ?\n options.tileLoadFunction : defaultTileLoadFunction,\n tilePixelRatio: options.tilePixelRatio,\n tileUrlFunction: options.tileUrlFunction,\n url: options.url,\n urls: options.urls,\n wrapX: options.wrapX,\n transition: options.transition,\n key: options.key,\n attributionsCollapsible: options.attributionsCollapsible\n });\n\n /**\n * @protected\n * @type {?string}\n */\n this.crossOrigin =\n options.crossOrigin !== undefined ? options.crossOrigin : null;\n\n /**\n * @protected\n * @type {typeof ImageTile}\n */\n this.tileClass = options.tileClass !== undefined ?\n options.tileClass : ImageTile;\n\n /**\n * @protected\n * @type {!Object}\n */\n this.tileCacheForProjection = {};\n\n /**\n * @protected\n * @type {!Object}\n */\n this.tileGridForProjection = {};\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.reprojectionErrorThreshold_ = options.reprojectionErrorThreshold;\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderReprojectionEdges_ = false;\n }\n\n /**\n * @inheritDoc\n */\n canExpireCache() {\n if (!ENABLE_RASTER_REPROJECTION) {\n return super.canExpireCache();\n }\n if (this.tileCache.canExpireCache()) {\n return true;\n } else {\n for (const key in this.tileCacheForProjection) {\n if (this.tileCacheForProjection[key].canExpireCache()) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * @inheritDoc\n */\n expireCache(projection, usedTiles) {\n if (!ENABLE_RASTER_REPROJECTION) {\n super.expireCache(projection, usedTiles);\n return;\n }\n const usedTileCache = this.getTileCacheForProjection(projection);\n\n this.tileCache.expireCache(this.tileCache == usedTileCache ? usedTiles : {});\n for (const id in this.tileCacheForProjection) {\n const tileCache = this.tileCacheForProjection[id];\n tileCache.expireCache(tileCache == usedTileCache ? usedTiles : {});\n }\n }\n\n /**\n * @inheritDoc\n */\n getGutterForProjection(projection) {\n if (ENABLE_RASTER_REPROJECTION &&\n this.getProjection() && projection && !equivalent(this.getProjection(), projection)) {\n return 0;\n } else {\n return this.getGutter();\n }\n }\n\n /**\n * @return {number} Gutter.\n */\n getGutter() {\n return 0;\n }\n\n /**\n * @inheritDoc\n */\n getOpaque(projection) {\n if (ENABLE_RASTER_REPROJECTION &&\n this.getProjection() && projection && !equivalent(this.getProjection(), projection)) {\n return false;\n } else {\n return super.getOpaque(projection);\n }\n }\n\n /**\n * @inheritDoc\n */\n getTileGridForProjection(projection) {\n if (!ENABLE_RASTER_REPROJECTION) {\n return super.getTileGridForProjection(projection);\n }\n const thisProj = this.getProjection();\n if (this.tileGrid && (!thisProj || equivalent(thisProj, projection))) {\n return this.tileGrid;\n } else {\n const projKey = getUid(projection);\n if (!(projKey in this.tileGridForProjection)) {\n this.tileGridForProjection[projKey] = getTileGridForProjection(projection);\n }\n return (\n /** @type {!import(\"../tilegrid/TileGrid.js\").default} */ (this.tileGridForProjection[projKey])\n );\n }\n }\n\n /**\n * @inheritDoc\n */\n getTileCacheForProjection(projection) {\n if (!ENABLE_RASTER_REPROJECTION) {\n return super.getTileCacheForProjection(projection);\n }\n const thisProj = this.getProjection(); if (!thisProj || equivalent(thisProj, projection)) {\n return this.tileCache;\n } else {\n const projKey = getUid(projection);\n if (!(projKey in this.tileCacheForProjection)) {\n this.tileCacheForProjection[projKey] = new TileCache(this.tileCache.highWaterMark);\n }\n return this.tileCacheForProjection[projKey];\n }\n }\n\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {string} key The key set on the tile.\n * @return {!import(\"../Tile.js\").default} Tile.\n * @private\n */\n createTile_(z, x, y, pixelRatio, projection, key) {\n const tileCoord = [z, x, y];\n const urlTileCoord = this.getTileCoordForTileUrlFunction(\n tileCoord, projection);\n const tileUrl = urlTileCoord ?\n this.tileUrlFunction(urlTileCoord, pixelRatio, projection) : undefined;\n const tile = new this.tileClass(\n tileCoord,\n tileUrl !== undefined ? TileState.IDLE : TileState.EMPTY,\n tileUrl !== undefined ? tileUrl : '',\n this.crossOrigin,\n this.tileLoadFunction,\n this.tileOptions);\n tile.key = key;\n listen(tile, EventType.CHANGE,\n this.handleTileChange, this);\n return tile;\n }\n\n /**\n * @inheritDoc\n */\n getTile(z, x, y, pixelRatio, projection) {\n const sourceProjection = /** @type {!import(\"../proj/Projection.js\").default} */ (this.getProjection());\n if (!ENABLE_RASTER_REPROJECTION ||\n !sourceProjection || !projection || equivalent(sourceProjection, projection)) {\n return this.getTileInternal(z, x, y, pixelRatio, sourceProjection || projection);\n } else {\n const cache = this.getTileCacheForProjection(projection);\n const tileCoord = [z, x, y];\n let tile;\n const tileCoordKey = getKey(tileCoord);\n if (cache.containsKey(tileCoordKey)) {\n tile = /** @type {!import(\"../Tile.js\").default} */ (cache.get(tileCoordKey));\n }\n const key = this.getKey();\n if (tile && tile.key == key) {\n return tile;\n } else {\n const sourceTileGrid = this.getTileGridForProjection(sourceProjection);\n const targetTileGrid = this.getTileGridForProjection(projection);\n const wrappedTileCoord =\n this.getTileCoordForTileUrlFunction(tileCoord, projection);\n const newTile = new ReprojTile(\n sourceProjection, sourceTileGrid,\n projection, targetTileGrid,\n tileCoord, wrappedTileCoord, this.getTilePixelRatio(pixelRatio),\n this.getGutter(),\n function(z, x, y, pixelRatio) {\n return this.getTileInternal(z, x, y, pixelRatio, sourceProjection);\n }.bind(this), this.reprojectionErrorThreshold_,\n this.renderReprojectionEdges_);\n newTile.key = key;\n\n if (tile) {\n newTile.interimTile = tile;\n newTile.refreshInterimChain();\n cache.replace(tileCoordKey, newTile);\n } else {\n cache.set(tileCoordKey, newTile);\n }\n return newTile;\n }\n }\n }\n\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {!import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!import(\"../Tile.js\").default} Tile.\n * @protected\n */\n getTileInternal(z, x, y, pixelRatio, projection) {\n let tile = null;\n const tileCoordKey = getKeyZXY(z, x, y);\n const key = this.getKey();\n if (!this.tileCache.containsKey(tileCoordKey)) {\n tile = this.createTile_(z, x, y, pixelRatio, projection, key);\n this.tileCache.set(tileCoordKey, tile);\n } else {\n tile = this.tileCache.get(tileCoordKey);\n if (tile.key != key) {\n // The source's params changed. If the tile has an interim tile and if we\n // can use it then we use it. Otherwise we create a new tile. In both\n // cases we attempt to assign an interim tile to the new tile.\n const interimTile = tile;\n tile = this.createTile_(z, x, y, pixelRatio, projection, key);\n\n //make the new tile the head of the list,\n if (interimTile.getState() == TileState.IDLE) {\n //the old tile hasn't begun loading yet, and is now outdated, so we can simply discard it\n tile.interimTile = interimTile.interimTile;\n } else {\n tile.interimTile = interimTile;\n }\n tile.refreshInterimChain();\n this.tileCache.replace(tileCoordKey, tile);\n }\n }\n return tile;\n }\n\n /**\n * Sets whether to render reprojection edges or not (usually for debugging).\n * @param {boolean} render Render the edges.\n * @api\n */\n setRenderReprojectionEdges(render) {\n if (!ENABLE_RASTER_REPROJECTION ||\n this.renderReprojectionEdges_ == render) {\n return;\n }\n this.renderReprojectionEdges_ = render;\n for (const id in this.tileCacheForProjection) {\n this.tileCacheForProjection[id].clear();\n }\n this.changed();\n }\n\n /**\n * Sets the tile grid to use when reprojecting the tiles to the given\n * projection instead of the default tile grid for the projection.\n *\n * This can be useful when the default tile grid cannot be created\n * (e.g. projection has no extent defined) or\n * for optimization reasons (custom tile size, resolutions, ...).\n *\n * @param {import(\"../proj.js\").ProjectionLike} projection Projection.\n * @param {import(\"../tilegrid/TileGrid.js\").default} tilegrid Tile grid to use for the projection.\n * @api\n */\n setTileGridForProjection(projection, tilegrid) {\n if (ENABLE_RASTER_REPROJECTION) {\n const proj = getProjection(projection);\n if (proj) {\n const projKey = getUid(proj);\n if (!(projKey in this.tileGridForProjection)) {\n this.tileGridForProjection[projKey] = tilegrid;\n }\n }\n }\n }\n}\n\n\n/**\n * @param {ImageTile} imageTile Image tile.\n * @param {string} src Source.\n */\nfunction defaultTileLoadFunction(imageTile, src) {\n /** @type {HTMLImageElement|HTMLVideoElement} */ (imageTile.getImage()).src = src;\n}\n\nexport default TileImage;\n","/**\n * @module ol/source/XYZ\n */\n\nimport TileImage from './TileImage.js';\nimport {createXYZ, extentFromProjection} from '../tilegrid.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize=2048] Cache size.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that\n * you must provide a `crossOrigin` value if you are using the WebGL renderer or if you want to\n * access pixel data with the Canvas renderer. See\n * https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [opaque=true] Whether the layer is opaque.\n * @property {import(\"../proj.js\").ProjectionLike} [projection='EPSG:3857'] Projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {number} [maxZoom=18] Optional max zoom level.\n * @property {number} [minZoom=0] Optional min zoom level.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service.\n * For example, if the tile service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {number|import(\"../size.js\").Size} [tileSize=[256, 256]] The tile size used by the tile service.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get\n * tile URL given a tile coordinate and the projection.\n * Required if url or urls are not provided.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`,\n * and `{z}` placeholders. A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`,\n * may be used instead of defining each one separately in the `urls` option.\n * @property {Array} [urls] An array of URL templates.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n */\n\n\n/**\n * @classdesc\n * Layer source for tile data with URLs in a set XYZ format that are\n * defined in a URL template. By default, this follows the widely-used\n * Google grid where `x` 0 and `y` 0 are in the top left. Grids like\n * TMS where `x` 0 and `y` 0 are in the bottom left can be used by\n * using the `{-y}` placeholder in the URL template, so long as the\n * source does not have a custom tile grid. In this case,\n * {@link module:ol/source/TileImage} can be used with a `tileUrlFunction`\n * such as:\n *\n * tileUrlFunction: function(coordinate) {\n * return 'http://mapserver.com/' + coordinate[0] + '/' +\n * coordinate[1] + '/' + coordinate[2] + '.png';\n * }\n *\n * @api\n */\nclass XYZ extends TileImage {\n /**\n * @param {Options=} opt_options XYZ options.\n */\n constructor(opt_options) {\n const options = opt_options || {};\n const projection = options.projection !== undefined ?\n options.projection : 'EPSG:3857';\n\n const tileGrid = options.tileGrid !== undefined ? options.tileGrid :\n createXYZ({\n extent: extentFromProjection(projection),\n maxZoom: options.maxZoom,\n minZoom: options.minZoom,\n tileSize: options.tileSize\n });\n\n super({\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n crossOrigin: options.crossOrigin,\n opaque: options.opaque,\n projection: projection,\n reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n tileGrid: tileGrid,\n tileLoadFunction: options.tileLoadFunction,\n tilePixelRatio: options.tilePixelRatio,\n tileUrlFunction: options.tileUrlFunction,\n url: options.url,\n urls: options.urls,\n wrapX: options.wrapX !== undefined ? options.wrapX : true,\n transition: options.transition,\n attributionsCollapsible: options.attributionsCollapsible\n });\n\n }\n\n}\n\nexport default XYZ;\n","/**\n * @module ol/source/OSM\n */\n\nimport XYZ from './XYZ.js';\n\n\n/**\n * The attribution containing a link to the OpenStreetMap Copyright and License\n * page.\n * @const\n * @type {string}\n * @api\n */\nexport const ATTRIBUTION = '© ' +\n 'OpenStreetMap ' +\n 'contributors.';\n\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {number} [cacheSize=2048] Cache size.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that\n * you must provide a `crossOrigin` value if you are using the WebGL renderer or if you want to\n * access pixel data with the Canvas renderer. See\n * https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {number} [maxZoom=19] Max zoom.\n * @property {boolean} [opaque=true] Whether the layer is opaque.\n * @property {number} [reprojectionErrorThreshold=1.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {string} [url='https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png'] URL template.\n * Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n */\n\n\n/**\n * @classdesc\n * Layer source for the OpenStreetMap tile server.\n * @api\n */\nclass OSM extends XYZ {\n /**\n * @param {Options=} [opt_options] Open Street Map options.\n */\n constructor(opt_options) {\n\n const options = opt_options || {};\n\n let attributions;\n if (options.attributions !== undefined) {\n attributions = options.attributions;\n } else {\n attributions = [ATTRIBUTION];\n }\n\n const crossOrigin = options.crossOrigin !== undefined ?\n options.crossOrigin : 'anonymous';\n\n const url = options.url !== undefined ?\n options.url : 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n\n super({\n attributions: attributions,\n cacheSize: options.cacheSize,\n crossOrigin: crossOrigin,\n opaque: options.opaque !== undefined ? options.opaque : true,\n maxZoom: options.maxZoom !== undefined ? options.maxZoom : 19,\n reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n tileLoadFunction: options.tileLoadFunction,\n url: url,\n wrapX: options.wrapX,\n attributionsCollapsible: false\n });\n\n }\n\n}\n\nexport default OSM;\n","/**\n * @module ol/Feature\n */\nimport {assert} from './asserts.js';\nimport {listen, unlisten, unlistenByKey} from './events.js';\nimport EventType from './events/EventType.js';\nimport BaseObject, {getChangeEventType} from './Object.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n */\nclass Feature extends BaseObject {\n /**\n * @param {import(\"./geom/Geometry.js\").default|Object=} opt_geometryOrProperties\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(opt_geometryOrProperties) {\n\n super();\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n listen(\n this, getChangeEventType(this.geometryName_),\n this.handleGeometryChanged_, this);\n\n if (opt_geometryOrProperties) {\n if (typeof /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry === 'function') {\n const geometry = /** @type {import(\"./geom/Geometry.js\").default} */ (opt_geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = opt_geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = new Feature(this.getProperties());\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {import(\"./geom/Geometry.js\").default|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return (\n /** @type {import(\"./geom/Geometry.js\").default|undefined} */ (this.get(this.geometryName_))\n );\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry,\n EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {import(\"./geom/Geometry.js\").default|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature. This can be a single style object, an array\n * of styles, or a function that takes a resolution and returns an array of\n * styles. If it is `null` the feature has no style (a `null` style).\n * @param {import(\"./style/Style.js\").StyleLike} style Style for this feature.\n * @api\n * @fires module:ol/events/Event~Event#event:change\n */\n setStyle(style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~Event#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n unlisten(\n this, getChangeEventType(this.geometryName_),\n this.handleGeometryChanged_, this);\n this.geometryName_ = name;\n listen(\n this, getChangeEventType(this.geometryName_),\n this.handleGeometryChanged_, this);\n this.handleGeometryChanged_();\n }\n}\n\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n } else {\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(typeof /** @type {?} */ (obj).getZIndex === 'function',\n 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function() {\n return styles;\n };\n }\n}\nexport default Feature;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove'\n};\n","/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport BaseObject from './Object.js';\nimport Event from './events/Event.js';\n\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length'\n};\n\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nexport class CollectionEvent extends Event {\n\n /**\n * @param {CollectionEventType} type Type.\n * @param {*=} opt_element Element.\n */\n constructor(type, opt_element) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n this.element = opt_element;\n\n }\n\n}\n\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n\n /**\n * @param {Array=} opt_array Array.\n * @param {Options=} opt_options Collection options.\n */\n constructor(opt_array, opt_options) {\n\n super();\n\n const options = opt_options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = opt_array ? opt_array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem));\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev));\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.REMOVE, prev));\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem));\n } else {\n for (let j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number=} opt_except Optional index to ignore.\n */\n assertUnique_(elem, opt_except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n }\n}\n\n\nexport default Collection;\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n constructor(type, map, opt_frameState) {\n\n super(type);\n\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n this.map = map;\n\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n\n }\n\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n */\nclass MapBrowserEvent extends MapEvent {\n\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {Event} browserEvent Browser event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n constructor(type, map, browserEvent, opt_dragging, opt_frameState) {\n\n super(type, map, opt_frameState);\n\n /**\n * The original browser event.\n * @const\n * @type {Event}\n * @api\n */\n this.originalEvent = browserEvent;\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n this.pixel = map.getEventPixel(browserEvent);\n\n /**\n * The coordinate in view projection corresponding to the original browser event.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n this.coordinate = map.getCoordinateFromPixel(this.pixel);\n\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n\n }\n\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @override\n * @api\n */\n preventDefault() {\n super.preventDefault();\n this.originalEvent.preventDefault();\n }\n\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @override\n * @api\n */\n stopPropagation() {\n super.stopPropagation();\n this.originalEvent.stopPropagation();\n }\n}\n\n\nexport default MapBrowserEvent;\n","/**\n * @module ol/webgl\n */\n\n\n/**\n * Constants taken from goog.webgl\n */\n\n\n/**\n * @const\n * @type {number}\n */\nexport const ONE = 1;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const SRC_ALPHA = 0x0302;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const COLOR_ATTACHMENT0 = 0x8CE0;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const COLOR_BUFFER_BIT = 0x00004000;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TRIANGLES = 0x0004;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TRIANGLE_STRIP = 0x0005;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const ONE_MINUS_SRC_ALPHA = 0x0303;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const ARRAY_BUFFER = 0x8892;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const ELEMENT_ARRAY_BUFFER = 0x8893;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const STREAM_DRAW = 0x88E0;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const STATIC_DRAW = 0x88E4;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const DYNAMIC_DRAW = 0x88E8;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const CULL_FACE = 0x0B44;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const BLEND = 0x0BE2;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const STENCIL_TEST = 0x0B90;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const DEPTH_TEST = 0x0B71;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const SCISSOR_TEST = 0x0C11;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const UNSIGNED_BYTE = 0x1401;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const UNSIGNED_SHORT = 0x1403;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const UNSIGNED_INT = 0x1405;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const FLOAT = 0x1406;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const RGBA = 0x1908;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const FRAGMENT_SHADER = 0x8B30;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const VERTEX_SHADER = 0x8B31;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const LINK_STATUS = 0x8B82;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const LINEAR = 0x2601;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TEXTURE_MAG_FILTER = 0x2800;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TEXTURE_MIN_FILTER = 0x2801;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TEXTURE_WRAP_S = 0x2802;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TEXTURE_WRAP_T = 0x2803;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TEXTURE_2D = 0x0DE1;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const TEXTURE0 = 0x84C0;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const CLAMP_TO_EDGE = 0x812F;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const COMPILE_STATUS = 0x8B81;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const FRAMEBUFFER = 0x8D40;\n\n\n/** end of goog.webgl constants\n */\n\n\n/**\n * @const\n * @type {Array}\n */\nconst CONTEXT_IDS = [\n 'experimental-webgl',\n 'webgl',\n 'webkit-3d',\n 'moz-webgl'\n];\n\n\n/**\n * @param {HTMLCanvasElement} canvas Canvas.\n * @param {Object=} opt_attributes Attributes.\n * @return {WebGLRenderingContext} WebGL rendering context.\n */\nexport function getContext(canvas, opt_attributes) {\n const ii = CONTEXT_IDS.length;\n for (let i = 0; i < ii; ++i) {\n try {\n const context = canvas.getContext(CONTEXT_IDS[i], opt_attributes);\n if (context) {\n return /** @type {!WebGLRenderingContext} */ (context);\n }\n } catch (e) {\n // pass\n }\n }\n return null;\n}\n\n\n/**\n * Include debuggable shader sources. Default is `true`. This should be set to\n * `false` for production builds.\n * @type {boolean}\n */\nexport const DEBUG = true;\n\n\n/**\n * The maximum supported WebGL texture size in pixels. If WebGL is not\n * supported, the value is set to `undefined`.\n * @type {number|undefined}\n */\nlet MAX_TEXTURE_SIZE; // value is set below\n\n\n/**\n * List of supported WebGL extensions.\n * @type {Array}\n */\nlet EXTENSIONS; // value is set below\n\n\n/**\n * True if both OpenLayers and browser support WebGL.\n * @type {boolean}\n * @api\n */\nlet HAS = false;\n\n//TODO Remove side effects\nif (typeof window !== 'undefined' && 'WebGLRenderingContext' in window) {\n try {\n const canvas = /** @type {HTMLCanvasElement} */ (document.createElement('canvas'));\n const gl = getContext(canvas, {failIfMajorPerformanceCaveat: true});\n if (gl) {\n HAS = true;\n MAX_TEXTURE_SIZE = /** @type {number} */ (gl.getParameter(gl.MAX_TEXTURE_SIZE));\n EXTENSIONS = gl.getSupportedExtensions();\n }\n } catch (e) {\n // pass\n }\n}\n\nexport {HAS, MAX_TEXTURE_SIZE, EXTENSIONS};\n","/**\n * @module ol/has\n */\n\nconst ua = typeof navigator !== 'undefined' ?\n navigator.userAgent.toLowerCase() : '';\n\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport const FIREFOX = ua.indexOf('firefox') !== -1;\n\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport const SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport const WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport const MAC = ua.indexOf('macintosh') !== -1;\n\n\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport const DEVICE_PIXEL_RATIO = window.devicePixelRatio || 1;\n\n\n/**\n * True if the browser's Canvas implementation implements {get,set}LineDash.\n * @type {boolean}\n */\nexport const CANVAS_LINE_DASH = function() {\n let has = false;\n try {\n has = !!document.createElement('canvas').getContext('2d').setLineDash;\n } catch (e) {\n // pass\n }\n return has;\n}();\n\n\n/**\n * Is HTML5 geolocation supported in the current browser?\n * @const\n * @type {boolean}\n * @api\n */\nexport const GEOLOCATION = 'geolocation' in navigator;\n\n\n/**\n * True if browser supports touch events.\n * @const\n * @type {boolean}\n * @api\n */\nexport const TOUCH = 'ontouchstart' in window;\n\n\n/**\n * True if browser supports pointer events.\n * @const\n * @type {boolean}\n */\nexport const POINTER = 'PointerEvent' in window;\n\n\n/**\n * True if browser supports ms pointer events (IE 10).\n * @const\n * @type {boolean}\n */\nexport const MSPOINTER = !!(navigator.msPointerEnabled);\n\n\nexport {HAS as WEBGL} from './webgl.js';\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n","/**\n * @module ol/MapBrowserPointerEvent\n */\nimport MapBrowserEvent from './MapBrowserEvent.js';\n\nclass MapBrowserPointerEvent extends MapBrowserEvent {\n\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n constructor(type, map, pointerEvent, opt_dragging, opt_frameState) {\n\n super(type, map, pointerEvent.originalEvent, opt_dragging, opt_frameState);\n\n /**\n * @const\n * @type {import(\"./pointer/PointerEvent.js\").default}\n */\n this.pointerEvent = pointerEvent;\n\n }\n\n}\n\nexport default MapBrowserPointerEvent;\n","/**\n * @module ol/pointer/EventType\n */\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n","/**\n * @module ol/pointer/EventSource\n */\n\nclass EventSource {\n\n /**\n * @param {import(\"./PointerEventHandler.js\").default} dispatcher Event handler.\n * @param {!Object} mapping Event mapping.\n */\n constructor(dispatcher, mapping) {\n\n /**\n * @type {import(\"./PointerEventHandler.js\").default}\n */\n this.dispatcher = dispatcher;\n\n /**\n * @private\n * @const\n * @type {!Object}\n */\n this.mapping_ = mapping;\n }\n\n /**\n * List of events supported by this source.\n * @return {Array} Event names\n */\n getEvents() {\n return Object.keys(this.mapping_);\n }\n\n /**\n * Returns the handler that should handle a given event type.\n * @param {string} eventType The event type.\n * @return {function(Event)} Handler\n */\n getHandlerForEvent(eventType) {\n return this.mapping_[eventType];\n }\n\n}\n\nexport default EventSource;\n","/**\n * @module ol/pointer/MouseSource\n */\n\n// Based on https://github.com/Polymer/PointerEvents\n\n// Copyright (c) 2013 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport EventSource from './EventSource.js';\n\n\n/**\n * @type {number}\n */\nexport const POINTER_ID = 1;\n\n\n/**\n * @type {string}\n */\nexport const POINTER_TYPE = 'mouse';\n\n\n/**\n * Radius around touchend that swallows mouse events.\n *\n * @type {number}\n */\nconst DEDUP_DIST = 25;\n\n/**\n * Handler for `mousedown`.\n *\n * @this {MouseSource}\n * @param {MouseEvent} inEvent The in event.\n */\nfunction mousedown(inEvent) {\n if (!this.isEventSimulatedFromTouch_(inEvent)) {\n // TODO(dfreedman) workaround for some elements not sending mouseup\n // http://crbug/149091\n if (POINTER_ID.toString() in this.pointerMap) {\n this.cancel(inEvent);\n }\n const e = prepareEvent(inEvent, this.dispatcher);\n this.pointerMap[POINTER_ID.toString()] = inEvent;\n this.dispatcher.down(e, inEvent);\n }\n}\n\n/**\n * Handler for `mousemove`.\n *\n * @this {MouseSource}\n * @param {MouseEvent} inEvent The in event.\n */\nfunction mousemove(inEvent) {\n if (!this.isEventSimulatedFromTouch_(inEvent)) {\n const e = prepareEvent(inEvent, this.dispatcher);\n this.dispatcher.move(e, inEvent);\n }\n}\n\n/**\n * Handler for `mouseup`.\n *\n * @this {MouseSource}\n * @param {MouseEvent} inEvent The in event.\n */\nfunction mouseup(inEvent) {\n if (!this.isEventSimulatedFromTouch_(inEvent)) {\n const p = this.pointerMap[POINTER_ID.toString()];\n\n if (p && p.button === inEvent.button) {\n const e = prepareEvent(inEvent, this.dispatcher);\n this.dispatcher.up(e, inEvent);\n this.cleanupMouse();\n }\n }\n}\n\n/**\n * Handler for `mouseover`.\n *\n * @this {MouseSource}\n * @param {MouseEvent} inEvent The in event.\n */\nfunction mouseover(inEvent) {\n if (!this.isEventSimulatedFromTouch_(inEvent)) {\n const e = prepareEvent(inEvent, this.dispatcher);\n this.dispatcher.enterOver(e, inEvent);\n }\n}\n\n/**\n * Handler for `mouseout`.\n *\n * @this {MouseSource}\n * @param {MouseEvent} inEvent The in event.\n */\nfunction mouseout(inEvent) {\n if (!this.isEventSimulatedFromTouch_(inEvent)) {\n const e = prepareEvent(inEvent, this.dispatcher);\n this.dispatcher.leaveOut(e, inEvent);\n }\n}\n\n\nclass MouseSource extends EventSource {\n\n /**\n * @param {import(\"./PointerEventHandler.js\").default} dispatcher Event handler.\n */\n constructor(dispatcher) {\n const mapping = {\n 'mousedown': mousedown,\n 'mousemove': mousemove,\n 'mouseup': mouseup,\n 'mouseover': mouseover,\n 'mouseout': mouseout\n };\n super(dispatcher, mapping);\n\n /**\n * @const\n * @type {!Object}\n */\n this.pointerMap = dispatcher.pointerMap;\n\n /**\n * @const\n * @type {Array}\n */\n this.lastTouches = [];\n }\n\n /**\n * Detect if a mouse event was simulated from a touch by\n * checking if previously there was a touch event at the\n * same position.\n *\n * FIXME - Known problem with the native Android browser on\n * Samsung GT-I9100 (Android 4.1.2):\n * In case the page is scrolled, this function does not work\n * correctly when a canvas is used (WebGL or canvas renderer).\n * Mouse listeners on canvas elements (for this browser), create\n * two mouse events: One 'good' and one 'bad' one (on other browsers or\n * when a div is used, there is only one event). For the 'bad' one,\n * clientX/clientY and also pageX/pageY are wrong when the page\n * is scrolled. Because of that, this function can not detect if\n * the events were simulated from a touch event. As result, a\n * pointer event at a wrong position is dispatched, which confuses\n * the map interactions.\n * It is unclear, how one can get the correct position for the event\n * or detect that the positions are invalid.\n *\n * @private\n * @param {MouseEvent} inEvent The in event.\n * @return {boolean} True, if the event was generated by a touch.\n */\n isEventSimulatedFromTouch_(inEvent) {\n const lts = this.lastTouches;\n const x = inEvent.clientX;\n const y = inEvent.clientY;\n for (let i = 0, l = lts.length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events will be swallowed near a primary touchend\n const dx = Math.abs(x - t[0]);\n const dy = Math.abs(y - t[1]);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Dispatches a `pointercancel` event.\n *\n * @param {Event} inEvent The in event.\n */\n cancel(inEvent) {\n const e = prepareEvent(inEvent, this.dispatcher);\n this.dispatcher.cancel(e, inEvent);\n this.cleanupMouse();\n }\n\n /**\n * Remove the mouse from the list of active pointers.\n */\n cleanupMouse() {\n delete this.pointerMap[POINTER_ID.toString()];\n }\n}\n\n\n/**\n * Creates a copy of the original event that will be used\n * for the fake pointer event.\n *\n * @param {Event} inEvent The in event.\n * @param {import(\"./PointerEventHandler.js\").default} dispatcher Event handler.\n * @return {Object} The copied event.\n */\nexport function prepareEvent(inEvent, dispatcher) {\n const e = dispatcher.cloneEvent(inEvent, inEvent);\n\n // forward mouse preventDefault\n const pd = e.preventDefault;\n e.preventDefault = function() {\n inEvent.preventDefault();\n pd();\n };\n\n e.pointerId = POINTER_ID;\n e.isPrimary = true;\n e.pointerType = POINTER_TYPE;\n\n return e;\n}\n\n\nexport default MouseSource;\n","/**\n * @module ol/pointer/MsSource\n */\n// Based on https://github.com/Polymer/PointerEvents\n\n// Copyright (c) 2013 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport EventSource from './EventSource.js';\n\n\n/**\n * @const\n * @type {Array}\n */\nconst POINTER_TYPES = [\n '',\n 'unavailable',\n 'touch',\n 'pen',\n 'mouse'\n];\n\n/**\n * Handler for `msPointerDown`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msPointerDown(inEvent) {\n this.pointerMap[inEvent.pointerId.toString()] = inEvent;\n const e = this.prepareEvent_(inEvent);\n this.dispatcher.down(e, inEvent);\n}\n\n/**\n * Handler for `msPointerMove`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msPointerMove(inEvent) {\n const e = this.prepareEvent_(inEvent);\n this.dispatcher.move(e, inEvent);\n}\n\n/**\n * Handler for `msPointerUp`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msPointerUp(inEvent) {\n const e = this.prepareEvent_(inEvent);\n this.dispatcher.up(e, inEvent);\n this.cleanup(inEvent.pointerId);\n}\n\n/**\n * Handler for `msPointerOut`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msPointerOut(inEvent) {\n const e = this.prepareEvent_(inEvent);\n this.dispatcher.leaveOut(e, inEvent);\n}\n\n/**\n * Handler for `msPointerOver`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msPointerOver(inEvent) {\n const e = this.prepareEvent_(inEvent);\n this.dispatcher.enterOver(e, inEvent);\n}\n\n/**\n * Handler for `msPointerCancel`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msPointerCancel(inEvent) {\n const e = this.prepareEvent_(inEvent);\n this.dispatcher.cancel(e, inEvent);\n this.cleanup(inEvent.pointerId);\n}\n\n/**\n * Handler for `msLostPointerCapture`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msLostPointerCapture(inEvent) {\n const e = this.dispatcher.makeEvent('lostpointercapture', inEvent, inEvent);\n this.dispatcher.dispatchEvent(e);\n}\n\n/**\n * Handler for `msGotPointerCapture`.\n *\n * @this {MsSource}\n * @param {MSPointerEvent} inEvent The in event.\n */\nfunction msGotPointerCapture(inEvent) {\n const e = this.dispatcher.makeEvent('gotpointercapture', inEvent, inEvent);\n this.dispatcher.dispatchEvent(e);\n}\n\nclass MsSource extends EventSource {\n\n /**\n * @param {import(\"./PointerEventHandler.js\").default} dispatcher Event handler.\n */\n constructor(dispatcher) {\n const mapping = {\n 'MSPointerDown': msPointerDown,\n 'MSPointerMove': msPointerMove,\n 'MSPointerUp': msPointerUp,\n 'MSPointerOut': msPointerOut,\n 'MSPointerOver': msPointerOver,\n 'MSPointerCancel': msPointerCancel,\n 'MSGotPointerCapture': msGotPointerCapture,\n 'MSLostPointerCapture': msLostPointerCapture\n };\n super(dispatcher, mapping);\n\n /**\n * @const\n * @type {!Object}\n */\n this.pointerMap = dispatcher.pointerMap;\n }\n\n /**\n * Creates a copy of the original event that will be used\n * for the fake pointer event.\n *\n * @private\n * @param {MSPointerEvent} inEvent The in event.\n * @return {Object} The copied event.\n */\n prepareEvent_(inEvent) {\n /** @type {MSPointerEvent|Object} */\n let e = inEvent;\n if (typeof inEvent.pointerType === 'number') {\n e = this.dispatcher.cloneEvent(inEvent, inEvent);\n e.pointerType = POINTER_TYPES[inEvent.pointerType];\n }\n\n return e;\n }\n\n /**\n * Remove this pointer from the list of active pointers.\n * @param {number} pointerId Pointer identifier.\n */\n cleanup(pointerId) {\n delete this.pointerMap[pointerId.toString()];\n }\n\n}\n\nexport default MsSource;\n","/**\n * @module ol/pointer/NativeSource\n */\n\n// Based on https://github.com/Polymer/PointerEvents\n\n// Copyright (c) 2013 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport EventSource from './EventSource.js';\n\n/**\n * Handler for `pointerdown`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction pointerDown(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\n/**\n * Handler for `pointermove`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction pointerMove(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\n/**\n * Handler for `pointerup`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction pointerUp(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\n/**\n * Handler for `pointerout`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction pointerOut(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\n/**\n * Handler for `pointerover`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction pointerOver(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\n/**\n * Handler for `pointercancel`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction pointerCancel(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\n/**\n * Handler for `lostpointercapture`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction lostPointerCapture(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\n/**\n * Handler for `gotpointercapture`.\n *\n * @this {NativeSource}\n * @param {Event} inEvent The in event.\n */\nfunction gotPointerCapture(inEvent) {\n this.dispatcher.fireNativeEvent(inEvent);\n}\n\nclass NativeSource extends EventSource {\n\n /**\n * @param {import(\"./PointerEventHandler.js\").default} dispatcher Event handler.\n */\n constructor(dispatcher) {\n const mapping = {\n 'pointerdown': pointerDown,\n 'pointermove': pointerMove,\n 'pointerup': pointerUp,\n 'pointerout': pointerOut,\n 'pointerover': pointerOver,\n 'pointercancel': pointerCancel,\n 'gotpointercapture': gotPointerCapture,\n 'lostpointercapture': lostPointerCapture\n };\n super(dispatcher, mapping);\n }\n\n}\n\nexport default NativeSource;\n","/**\n * @module ol/pointer/PointerEvent\n */\n\n// Based on https://github.com/Polymer/PointerEvents\n\n// Copyright (c) 2013 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport _Event from '../events/Event.js';\n\n\n/**\n * Is the `buttons` property supported?\n * @type {boolean}\n */\nlet HAS_BUTTONS = false;\n\n\nclass PointerEvent extends _Event {\n\n /**\n * A class for pointer events.\n *\n * This class is used as an abstraction for mouse events,\n * touch events and even native pointer events.\n *\n * @param {string} type The type of the event to create.\n * @param {Event} originalEvent The event.\n * @param {Object=} opt_eventDict An optional dictionary of\n * initial event properties.\n */\n constructor(type, originalEvent, opt_eventDict) {\n super(type);\n\n /**\n * @const\n * @type {Event}\n */\n this.originalEvent = originalEvent;\n\n const eventDict = opt_eventDict ? opt_eventDict : {};\n\n /**\n * @type {number}\n */\n this.buttons = getButtons(eventDict);\n\n /**\n * @type {number}\n */\n this.pressure = getPressure(eventDict, this.buttons);\n\n // MouseEvent related properties\n\n /**\n * @type {boolean}\n */\n this.bubbles = 'bubbles' in eventDict ? eventDict['bubbles'] : false;\n\n /**\n * @type {boolean}\n */\n this.cancelable = 'cancelable' in eventDict ? eventDict['cancelable'] : false;\n\n /**\n * @type {Object}\n */\n this.view = 'view' in eventDict ? eventDict['view'] : null;\n\n /**\n * @type {number}\n */\n this.detail = 'detail' in eventDict ? eventDict['detail'] : null;\n\n /**\n * @type {number}\n */\n this.screenX = 'screenX' in eventDict ? eventDict['screenX'] : 0;\n\n /**\n * @type {number}\n */\n this.screenY = 'screenY' in eventDict ? eventDict['screenY'] : 0;\n\n /**\n * @type {number}\n */\n this.clientX = 'clientX' in eventDict ? eventDict['clientX'] : 0;\n\n /**\n * @type {number}\n */\n this.clientY = 'clientY' in eventDict ? eventDict['clientY'] : 0;\n\n /**\n * @type {boolean}\n */\n this.ctrlKey = 'ctrlKey' in eventDict ? eventDict['ctrlKey'] : false;\n\n /**\n * @type {boolean}\n */\n this.altKey = 'altKey' in eventDict ? eventDict['altKey'] : false;\n\n /**\n * @type {boolean}\n */\n this.shiftKey = 'shiftKey' in eventDict ? eventDict['shiftKey'] : false;\n\n /**\n * @type {boolean}\n */\n this.metaKey = 'metaKey' in eventDict ? eventDict['metaKey'] : false;\n\n /**\n * @type {number}\n */\n this.button = 'button' in eventDict ? eventDict['button'] : 0;\n\n /**\n * @type {Node}\n */\n this.relatedTarget = 'relatedTarget' in eventDict ?\n eventDict['relatedTarget'] : null;\n\n // PointerEvent related properties\n\n /**\n * @const\n * @type {number}\n */\n this.pointerId = 'pointerId' in eventDict ? eventDict['pointerId'] : 0;\n\n /**\n * @type {number}\n */\n this.width = 'width' in eventDict ? eventDict['width'] : 0;\n\n /**\n * @type {number}\n */\n this.height = 'height' in eventDict ? eventDict['height'] : 0;\n\n /**\n * @type {number}\n */\n this.tiltX = 'tiltX' in eventDict ? eventDict['tiltX'] : 0;\n\n /**\n * @type {number}\n */\n this.tiltY = 'tiltY' in eventDict ? eventDict['tiltY'] : 0;\n\n /**\n * @type {string}\n */\n this.pointerType = 'pointerType' in eventDict ? eventDict['pointerType'] : '';\n\n /**\n * @type {number}\n */\n this.hwTimestamp = 'hwTimestamp' in eventDict ? eventDict['hwTimestamp'] : 0;\n\n /**\n * @type {boolean}\n */\n this.isPrimary = 'isPrimary' in eventDict ? eventDict['isPrimary'] : false;\n\n // keep the semantics of preventDefault\n if (originalEvent.preventDefault) {\n this.preventDefault = function() {\n originalEvent.preventDefault();\n };\n }\n }\n\n}\n\n\n/**\n * @param {Object} eventDict The event dictionary.\n * @return {number} Button indicator.\n */\nfunction getButtons(eventDict) {\n // According to the w3c spec,\n // http://www.w3.org/TR/DOM-Level-3-Events/#events-MouseEvent-button\n // MouseEvent.button == 0 can mean either no mouse button depressed, or the\n // left mouse button depressed.\n //\n // As of now, the only way to distinguish between the two states of\n // MouseEvent.button is by using the deprecated MouseEvent.which property, as\n // this maps mouse buttons to positive integers > 0, and uses 0 to mean that\n // no mouse button is held.\n //\n // MouseEvent.which is derived from MouseEvent.button at MouseEvent creation,\n // but initMouseEvent does not expose an argument with which to set\n // MouseEvent.which. Calling initMouseEvent with a buttonArg of 0 will set\n // MouseEvent.button == 0 and MouseEvent.which == 1, breaking the expectations\n // of app developers.\n //\n // The only way to propagate the correct state of MouseEvent.which and\n // MouseEvent.button to a new MouseEvent.button == 0 and MouseEvent.which == 0\n // is to call initMouseEvent with a buttonArg value of -1.\n //\n // This is fixed with DOM Level 4's use of buttons\n let buttons;\n if (eventDict.buttons || HAS_BUTTONS) {\n buttons = eventDict.buttons;\n } else {\n switch (eventDict.which) {\n case 1: buttons = 1; break;\n case 2: buttons = 4; break;\n case 3: buttons = 2; break;\n default: buttons = 0;\n }\n }\n return buttons;\n}\n\n\n/**\n * @param {Object} eventDict The event dictionary.\n * @param {number} buttons Button indicator.\n * @return {number} The pressure.\n */\nfunction getPressure(eventDict, buttons) {\n // Spec requires that pointers without pressure specified use 0.5 for down\n // state and 0 for up state.\n let pressure = 0;\n if (eventDict.pressure) {\n pressure = eventDict.pressure;\n } else {\n pressure = buttons ? 0.5 : 0;\n }\n return pressure;\n}\n\n\n/**\n * Checks if the `buttons` property is supported.\n */\n(function() {\n try {\n const ev = new MouseEvent('click', {buttons: 1});\n HAS_BUTTONS = ev.buttons === 1;\n } catch (e) {\n // pass\n }\n})();\n\nexport default PointerEvent;\n","/**\n * @module ol/pointer/TouchSource\n */\n\n// Based on https://github.com/Polymer/PointerEvents\n\n// Copyright (c) 2013 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport {remove} from '../array.js';\nimport EventSource from './EventSource.js';\nimport {POINTER_ID} from './MouseSource.js';\n\n\n/**\n * @type {number}\n */\nconst CLICK_COUNT_TIMEOUT = 200;\n\n/**\n * @type {string}\n */\nconst POINTER_TYPE = 'touch';\n\n/**\n * Handler for `touchstart`, triggers `pointerover`,\n * `pointerenter` and `pointerdown` events.\n *\n * @this {TouchSource}\n * @param {TouchEvent} inEvent The in event.\n */\nfunction touchstart(inEvent) {\n this.vacuumTouches_(inEvent);\n this.setPrimaryTouch_(inEvent.changedTouches[0]);\n this.dedupSynthMouse_(inEvent);\n this.clickCount_++;\n this.processTouches_(inEvent, this.overDown_);\n}\n\n/**\n * Handler for `touchmove`.\n *\n * @this {TouchSource}\n * @param {TouchEvent} inEvent The in event.\n */\nfunction touchmove(inEvent) {\n this.processTouches_(inEvent, this.moveOverOut_);\n}\n\n/**\n * Handler for `touchend`, triggers `pointerup`,\n * `pointerout` and `pointerleave` events.\n *\n * @this {TouchSource}\n * @param {TouchEvent} inEvent The event.\n */\nfunction touchend(inEvent) {\n this.dedupSynthMouse_(inEvent);\n this.processTouches_(inEvent, this.upOut_);\n}\n\n/**\n * Handler for `touchcancel`, triggers `pointercancel`,\n * `pointerout` and `pointerleave` events.\n *\n * @this {TouchSource}\n * @param {TouchEvent} inEvent The in event.\n */\nfunction touchcancel(inEvent) {\n this.processTouches_(inEvent, this.cancelOut_);\n}\n\n\nclass TouchSource extends EventSource {\n\n /**\n * @param {import(\"./PointerEventHandler.js\").default} dispatcher The event handler.\n * @param {import(\"./MouseSource.js\").default} mouseSource Mouse source.\n */\n constructor(dispatcher, mouseSource) {\n const mapping = {\n 'touchstart': touchstart,\n 'touchmove': touchmove,\n 'touchend': touchend,\n 'touchcancel': touchcancel\n };\n super(dispatcher, mapping);\n\n /**\n * @const\n * @type {!Object}\n */\n this.pointerMap = dispatcher.pointerMap;\n\n /**\n * @const\n * @type {import(\"./MouseSource.js\").default}\n */\n this.mouseSource = mouseSource;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.firstTouchId_ = undefined;\n\n /**\n * @private\n * @type {number}\n */\n this.clickCount_ = 0;\n\n /**\n * @private\n * @type {?}\n */\n this.resetId_;\n\n /**\n * Mouse event timeout: This should be long enough to\n * ignore compat mouse events made by touch.\n * @private\n * @type {number}\n */\n this.dedupTimeout_ = 2500;\n }\n\n /**\n * @private\n * @param {Touch} inTouch The in touch.\n * @return {boolean} True, if this is the primary touch.\n */\n isPrimaryTouch_(inTouch) {\n return this.firstTouchId_ === inTouch.identifier;\n }\n\n /**\n * Set primary touch if there are no pointers, or the only pointer is the mouse.\n * @param {Touch} inTouch The in touch.\n * @private\n */\n setPrimaryTouch_(inTouch) {\n const count = Object.keys(this.pointerMap).length;\n if (count === 0 || (count === 1 && POINTER_ID.toString() in this.pointerMap)) {\n this.firstTouchId_ = inTouch.identifier;\n this.cancelResetClickCount_();\n }\n }\n\n /**\n * @private\n * @param {PointerEvent} inPointer The in pointer object.\n */\n removePrimaryPointer_(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouchId_ = undefined;\n this.resetClickCount_();\n }\n }\n\n /**\n * @private\n */\n resetClickCount_() {\n this.resetId_ = setTimeout(\n this.resetClickCountHandler_.bind(this),\n CLICK_COUNT_TIMEOUT);\n }\n\n /**\n * @private\n */\n resetClickCountHandler_() {\n this.clickCount_ = 0;\n this.resetId_ = undefined;\n }\n\n /**\n * @private\n */\n cancelResetClickCount_() {\n if (this.resetId_ !== undefined) {\n clearTimeout(this.resetId_);\n }\n }\n\n /**\n * @private\n * @param {TouchEvent} browserEvent Browser event\n * @param {Touch} inTouch Touch event\n * @return {PointerEvent} A pointer object.\n */\n touchToPointer_(browserEvent, inTouch) {\n const e = this.dispatcher.cloneEvent(browserEvent, inTouch);\n // Spec specifies that pointerId 1 is reserved for Mouse.\n // Touch identifiers can start at 0.\n // Add 2 to the touch identifier for compatibility.\n e.pointerId = inTouch.identifier + 2;\n // TODO: check if this is necessary?\n //e.target = findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e.detail = this.clickCount_;\n e.button = 0;\n e.buttons = 1;\n e.width = inTouch.radiusX || 0;\n e.height = inTouch.radiusY || 0;\n e.pressure = inTouch.force || 0.5;\n e.isPrimary = this.isPrimaryTouch_(inTouch);\n e.pointerType = POINTER_TYPE;\n\n // make sure that the properties that are different for\n // each `Touch` object are not copied from the BrowserEvent object\n e.clientX = inTouch.clientX;\n e.clientY = inTouch.clientY;\n e.screenX = inTouch.screenX;\n e.screenY = inTouch.screenY;\n\n return e;\n }\n\n /**\n * @private\n * @param {TouchEvent} inEvent Touch event\n * @param {function(TouchEvent, PointerEvent)} inFunction In function.\n */\n processTouches_(inEvent, inFunction) {\n const touches = Array.prototype.slice.call(inEvent.changedTouches);\n const count = touches.length;\n function preventDefault() {\n inEvent.preventDefault();\n }\n for (let i = 0; i < count; ++i) {\n const pointer = this.touchToPointer_(inEvent, touches[i]);\n // forward touch preventDefaults\n pointer.preventDefault = preventDefault;\n inFunction.call(this, inEvent, pointer);\n }\n }\n\n /**\n * @private\n * @param {TouchList} touchList The touch list.\n * @param {number} searchId Search identifier.\n * @return {boolean} True, if the `Touch` with the given id is in the list.\n */\n findTouch_(touchList, searchId) {\n const l = touchList.length;\n for (let i = 0; i < l; i++) {\n const touch = touchList[i];\n if (touch.identifier === searchId) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * In some instances, a touchstart can happen without a touchend. This\n * leaves the pointermap in a broken state.\n * Therefore, on every touchstart, we remove the touches that did not fire a\n * touchend event.\n * To keep state globally consistent, we fire a pointercancel for\n * this \"abandoned\" touch\n *\n * @private\n * @param {TouchEvent} inEvent The in event.\n */\n vacuumTouches_(inEvent) {\n const touchList = inEvent.touches;\n // pointerMap.getCount() should be < touchList.length here,\n // as the touchstart has not been processed yet.\n const keys = Object.keys(this.pointerMap);\n const count = keys.length;\n if (count >= touchList.length) {\n const d = [];\n for (let i = 0; i < count; ++i) {\n const key = Number(keys[i]);\n const value = this.pointerMap[key];\n // Never remove pointerId == 1, which is mouse.\n // Touch identifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key != POINTER_ID && !this.findTouch_(touchList, key - 2)) {\n d.push(value.out);\n }\n }\n for (let i = 0; i < d.length; ++i) {\n this.cancelOut_(inEvent, d[i]);\n }\n }\n }\n\n /**\n * @private\n * @param {TouchEvent} browserEvent The event.\n * @param {PointerEvent} inPointer The in pointer object.\n */\n overDown_(browserEvent, inPointer) {\n this.pointerMap[inPointer.pointerId] = {\n target: inPointer.target,\n out: inPointer,\n outTarget: inPointer.target\n };\n this.dispatcher.over(inPointer, browserEvent);\n this.dispatcher.enter(inPointer, browserEvent);\n this.dispatcher.down(inPointer, browserEvent);\n }\n\n /**\n * @private\n * @param {TouchEvent} browserEvent The event.\n * @param {PointerEvent} inPointer The in pointer.\n */\n moveOverOut_(browserEvent, inPointer) {\n const event = inPointer;\n const pointer = this.pointerMap[event.pointerId];\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return;\n }\n const outEvent = pointer.out;\n const outTarget = pointer.outTarget;\n this.dispatcher.move(event, browserEvent);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target;\n /** @type {Object} */ (event).relatedTarget = outTarget;\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n this.dispatcher.leaveOut(outEvent, browserEvent);\n this.dispatcher.enterOver(event, browserEvent);\n } else {\n // clean up case when finger leaves the screen\n /** @type {Object} */ (event).target = outTarget;\n /** @type {Object} */ (event).relatedTarget = null;\n this.cancelOut_(browserEvent, event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n }\n\n /**\n * @private\n * @param {TouchEvent} browserEvent An event.\n * @param {PointerEvent} inPointer The inPointer object.\n */\n upOut_(browserEvent, inPointer) {\n this.dispatcher.up(inPointer, browserEvent);\n this.dispatcher.out(inPointer, browserEvent);\n this.dispatcher.leave(inPointer, browserEvent);\n this.cleanUpPointer_(inPointer);\n }\n\n /**\n * @private\n * @param {TouchEvent} browserEvent The event.\n * @param {PointerEvent} inPointer The in pointer.\n */\n cancelOut_(browserEvent, inPointer) {\n this.dispatcher.cancel(inPointer, browserEvent);\n this.dispatcher.out(inPointer, browserEvent);\n this.dispatcher.leave(inPointer, browserEvent);\n this.cleanUpPointer_(inPointer);\n }\n\n /**\n * @private\n * @param {PointerEvent} inPointer The inPointer object.\n */\n cleanUpPointer_(inPointer) {\n delete this.pointerMap[inPointer.pointerId];\n this.removePrimaryPointer_(inPointer);\n }\n\n /**\n * Prevent synth mouse events from creating pointer events.\n *\n * @private\n * @param {TouchEvent} inEvent The in event.\n */\n dedupSynthMouse_(inEvent) {\n const lts = this.mouseSource.lastTouches;\n const t = inEvent.changedTouches[0];\n // only the primary finger will synth mouse events\n if (this.isPrimaryTouch_(t)) {\n // remember x/y of last touch\n const lt = [t.clientX, t.clientY];\n lts.push(lt);\n\n setTimeout(function() {\n // remove touch after timeout\n remove(lts, lt);\n }, this.dedupTimeout_);\n }\n }\n}\n\nexport default TouchSource;\n","/**\n * @module ol/pointer/PointerEventHandler\n */\n\n// Based on https://github.com/Polymer/PointerEvents\n\n// Copyright (c) 2013 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport {listen, unlisten} from '../events.js';\nimport EventTarget from '../events/Target.js';\nimport {POINTER, MSPOINTER, TOUCH} from '../has.js';\nimport PointerEventType from './EventType.js';\nimport MouseSource, {prepareEvent as prepareMouseEvent} from './MouseSource.js';\nimport MsSource from './MsSource.js';\nimport NativeSource from './NativeSource.js';\nimport PointerEvent from './PointerEvent.js';\nimport TouchSource from './TouchSource.js';\n\n\n/**\n * Properties to copy when cloning an event, with default values.\n * @type {Array}\n */\nconst CLONE_PROPS = [\n // MouseEvent\n ['bubbles', false],\n ['cancelable', false],\n ['view', null],\n ['detail', null],\n ['screenX', 0],\n ['screenY', 0],\n ['clientX', 0],\n ['clientY', 0],\n ['ctrlKey', false],\n ['altKey', false],\n ['shiftKey', false],\n ['metaKey', false],\n ['button', 0],\n ['relatedTarget', null],\n // DOM Level 3\n ['buttons', 0],\n // PointerEvent\n ['pointerId', 0],\n ['width', 0],\n ['height', 0],\n ['pressure', 0],\n ['tiltX', 0],\n ['tiltY', 0],\n ['pointerType', ''],\n ['hwTimestamp', 0],\n ['isPrimary', false],\n // event instance\n ['type', ''],\n ['target', null],\n ['currentTarget', null],\n ['which', 0]\n];\n\n\nclass PointerEventHandler extends EventTarget {\n\n /**\n * @param {Element|HTMLDocument} element Viewport element.\n */\n constructor(element) {\n super();\n\n /**\n * @const\n * @private\n * @type {Element|HTMLDocument}\n */\n this.element_ = element;\n\n /**\n * @const\n * @type {!Object}\n */\n this.pointerMap = {};\n\n /**\n * @type {Object}\n * @private\n */\n this.eventMap_ = {};\n\n /**\n * @type {Array}\n * @private\n */\n this.eventSourceList_ = [];\n\n this.registerSources();\n }\n\n /**\n * Set up the event sources (mouse, touch and native pointers)\n * that generate pointer events.\n */\n registerSources() {\n if (POINTER) {\n this.registerSource('native', new NativeSource(this));\n } else if (MSPOINTER) {\n this.registerSource('ms', new MsSource(this));\n } else {\n const mouseSource = new MouseSource(this);\n this.registerSource('mouse', mouseSource);\n\n if (TOUCH) {\n this.registerSource('touch', new TouchSource(this, mouseSource));\n }\n }\n\n // register events on the viewport element\n this.register_();\n }\n\n /**\n * Add a new event source that will generate pointer events.\n *\n * @param {string} name A name for the event source\n * @param {import(\"./EventSource.js\").default} source The source event.\n */\n registerSource(name, source) {\n const s = source;\n const newEvents = s.getEvents();\n\n if (newEvents) {\n newEvents.forEach(function(e) {\n const handler = s.getHandlerForEvent(e);\n\n if (handler) {\n this.eventMap_[e] = handler.bind(s);\n }\n }.bind(this));\n this.eventSourceList_.push(s);\n }\n }\n\n /**\n * Set up the events for all registered event sources.\n * @private\n */\n register_() {\n const l = this.eventSourceList_.length;\n for (let i = 0; i < l; i++) {\n const eventSource = this.eventSourceList_[i];\n this.addEvents_(eventSource.getEvents());\n }\n }\n\n /**\n * Remove all registered events.\n * @private\n */\n unregister_() {\n const l = this.eventSourceList_.length;\n for (let i = 0; i < l; i++) {\n const eventSource = this.eventSourceList_[i];\n this.removeEvents_(eventSource.getEvents());\n }\n }\n\n /**\n * Calls the right handler for a new event.\n * @private\n * @param {Event} inEvent Browser event.\n */\n eventHandler_(inEvent) {\n const type = inEvent.type;\n const handler = this.eventMap_[type];\n if (handler) {\n handler(inEvent);\n }\n }\n\n /**\n * Setup listeners for the given events.\n * @private\n * @param {Array} events List of events.\n */\n addEvents_(events) {\n events.forEach(function(eventName) {\n listen(this.element_, eventName, this.eventHandler_, this);\n }.bind(this));\n }\n\n /**\n * Unregister listeners for the given events.\n * @private\n * @param {Array} events List of events.\n */\n removeEvents_(events) {\n events.forEach(function(e) {\n unlisten(this.element_, e, this.eventHandler_, this);\n }.bind(this));\n }\n\n /**\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @param {Event} event Browser event.\n * @param {Event|Touch} inEvent An event that contains\n * properties to copy.\n * @return {Object} An object containing shallow copies of\n * `inEvent`'s properties.\n */\n cloneEvent(event, inEvent) {\n const eventCopy = {};\n for (let i = 0, ii = CLONE_PROPS.length; i < ii; i++) {\n const p = CLONE_PROPS[i][0];\n eventCopy[p] = event[p] || inEvent[p] || CLONE_PROPS[i][1];\n }\n\n return eventCopy;\n }\n\n // EVENTS\n\n\n /**\n * Triggers a 'pointerdown' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n down(data, event) {\n this.fireEvent(PointerEventType.POINTERDOWN, data, event);\n }\n\n /**\n * Triggers a 'pointermove' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n move(data, event) {\n this.fireEvent(PointerEventType.POINTERMOVE, data, event);\n }\n\n /**\n * Triggers a 'pointerup' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n up(data, event) {\n this.fireEvent(PointerEventType.POINTERUP, data, event);\n }\n\n /**\n * Triggers a 'pointerenter' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n enter(data, event) {\n data.bubbles = false;\n this.fireEvent(PointerEventType.POINTERENTER, data, event);\n }\n\n /**\n * Triggers a 'pointerleave' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n leave(data, event) {\n data.bubbles = false;\n this.fireEvent(PointerEventType.POINTERLEAVE, data, event);\n }\n\n /**\n * Triggers a 'pointerover' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n over(data, event) {\n data.bubbles = true;\n this.fireEvent(PointerEventType.POINTEROVER, data, event);\n }\n\n /**\n * Triggers a 'pointerout' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n out(data, event) {\n data.bubbles = true;\n this.fireEvent(PointerEventType.POINTEROUT, data, event);\n }\n\n /**\n * Triggers a 'pointercancel' event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n cancel(data, event) {\n this.fireEvent(PointerEventType.POINTERCANCEL, data, event);\n }\n\n /**\n * Triggers a combination of 'pointerout' and 'pointerleave' events.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n leaveOut(data, event) {\n this.out(data, event);\n if (!this.contains_(data.target, data.relatedTarget)) {\n this.leave(data, event);\n }\n }\n\n /**\n * Triggers a combination of 'pointerover' and 'pointerevents' events.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n enterOver(data, event) {\n this.over(data, event);\n if (!this.contains_(data.target, data.relatedTarget)) {\n this.enter(data, event);\n }\n }\n\n /**\n * @private\n * @param {Element} container The container element.\n * @param {Element} contained The contained element.\n * @return {boolean} Returns true if the container element\n * contains the other element.\n */\n contains_(container, contained) {\n if (!container || !contained) {\n return false;\n }\n return container.contains(contained);\n }\n\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of type `inType`, based on the information in\n * `data`.\n *\n * @param {string} inType A string representing the type of event to create.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n * @return {PointerEvent} A PointerEvent of type `inType`.\n */\n makeEvent(inType, data, event) {\n return new PointerEvent(inType, event, data);\n }\n\n /**\n * Make and dispatch an event in one call.\n * @param {string} inType A string representing the type of event.\n * @param {Object} data Pointer event data.\n * @param {Event} event The event.\n */\n fireEvent(inType, data, event) {\n const e = this.makeEvent(inType, data, event);\n this.dispatchEvent(e);\n }\n\n /**\n * Creates a pointer event from a native pointer event\n * and dispatches this event.\n * @param {Event} event A platform event with a target.\n */\n fireNativeEvent(event) {\n const e = this.makeEvent(event.type, event, event);\n this.dispatchEvent(e);\n }\n\n /**\n * Wrap a native mouse event into a pointer event.\n * This proxy method is required for the legacy IE support.\n * @param {string} eventType The pointer event type.\n * @param {Event} event The event.\n * @return {PointerEvent} The wrapped event.\n */\n wrapMouseEvent(eventType, event) {\n const pointerEvent = this.makeEvent(\n eventType, prepareMouseEvent(event, this), event);\n return pointerEvent;\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n this.unregister_();\n super.disposeInternal();\n }\n}\n\nexport default PointerEventHandler;\n","/**\n * @module ol/MapBrowserEventHandler\n */\nimport {DEVICE_PIXEL_RATIO} from './has.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapBrowserPointerEvent from './MapBrowserPointerEvent.js';\nimport {listen, unlistenByKey} from './events.js';\nimport EventTarget from './events/Target.js';\nimport PointerEventType from './pointer/EventType.js';\nimport PointerEventHandler from './pointer/PointerEventHandler.js';\n\nclass MapBrowserEventHandler extends EventTarget {\n\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n constructor(map, moveTolerance) {\n\n super();\n\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n this.map_ = map;\n\n /**\n * @type {any}\n * @private\n */\n this.clickTimeoutId_;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_ = false;\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * @type {number}\n * @private\n */\n this.moveTolerance_ = moveTolerance ?\n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;\n\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {import(\"./pointer/PointerEvent.js\").default}\n * @private\n */\n this.down_ = null;\n\n const element = this.map_.getViewport();\n\n /**\n * @type {number}\n * @private\n */\n this.activePointers_ = 0;\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedTouches_ = {};\n\n /**\n * Event handler which generates pointer events for\n * the viewport element.\n *\n * @type {PointerEventHandler}\n * @private\n */\n this.pointerEventHandler_ = new PointerEventHandler(element);\n\n /**\n * Event handler which generates pointer events for\n * the document (used when dragging).\n *\n * @type {PointerEventHandler}\n * @private\n */\n this.documentPointerEventHandler_ = null;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.pointerdownListenerKey_ = listen(this.pointerEventHandler_,\n PointerEventType.POINTERDOWN,\n this.handlePointerDown_, this);\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.relayedListenerKey_ = listen(this.pointerEventHandler_,\n PointerEventType.POINTERMOVE,\n this.relayEvent_, this);\n\n }\n\n /**\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @private\n */\n emulateClick_(pointerEvent) {\n let newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n } else {\n // click\n this.clickTimeoutId_ = setTimeout(function() {\n this.clickTimeoutId_ = undefined;\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n }\n\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @private\n */\n updateActivePointers_(pointerEvent) {\n const event = pointerEvent;\n\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n } else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n }\n\n /**\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerUp_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped && !this.dragging_ && this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n this.documentPointerEventHandler_.dispose();\n this.documentPointerEventHandler_ = null;\n }\n }\n\n /**\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n isMouseActionButton_(pointerEvent) {\n return pointerEvent.button === 0;\n }\n\n /**\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerDown_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n\n this.down_ = pointerEvent;\n\n if (this.dragListenerKeys_.length === 0) {\n /* Set up a pointer event handler on the `document`,\n * which is required when the pointer is moved outside\n * the viewport when dragging.\n */\n this.documentPointerEventHandler_ =\n new PointerEventHandler(document);\n\n this.dragListenerKeys_.push(\n listen(this.documentPointerEventHandler_,\n MapBrowserEventType.POINTERMOVE,\n this.handlePointerMove_, this),\n listen(this.documentPointerEventHandler_,\n MapBrowserEventType.POINTERUP,\n this.handlePointerUp_, this),\n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.pointerEventHandler_,\n MapBrowserEventType.POINTERCANCEL,\n this.handlePointerUp_, this)\n );\n }\n }\n\n /**\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerMove_(pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent,\n this.dragging_);\n this.dispatchEvent(newEvent);\n }\n\n // Some native android browser triggers mousemove events during small period\n // of time. See: https://code.google.com/p/android/issues/detail?id=5491 or\n // https://code.google.com/p/android/issues/detail?id=19827\n // ex: Galaxy Tab P3110 + Android 4.1.1\n pointerEvent.preventDefault();\n }\n\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserPointerEvent matches the PointerEvent type.\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @private\n */\n relayEvent_(pointerEvent) {\n const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(\n pointerEvent.type, this.map_, pointerEvent, dragging));\n }\n\n /**\n * @param {import(\"./pointer/PointerEvent.js\").default} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n isMoving_(pointerEvent) {\n return this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) > this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_;\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n\n if (this.documentPointerEventHandler_) {\n this.documentPointerEventHandler_.dispose();\n this.documentPointerEventHandler_ = null;\n }\n if (this.pointerEventHandler_) {\n this.pointerEventHandler_.dispose();\n this.pointerEventHandler_ = null;\n }\n super.disposeInternal();\n }\n}\n\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend'\n\n};\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view'\n};\n","/**\n * @module ol/render/EventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * @event module:ol/render/Event~RenderEvent#render\n * @api\n */\n RENDER: 'render',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete'\n};\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n constructor(priorityFunction, keyFunction) {\n\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n }\n\n\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n dequeue() {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n } else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n const elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n }\n\n\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_),\n 31); // Tried to enqueue an `element` that was already added to the queue\n const priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n }\n\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.elements_.length;\n }\n\n\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n getLeftChildIndex_(index) {\n return index * 2 + 1;\n }\n\n\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n getRightChildIndex_(index) {\n return index * 2 + 2;\n }\n\n\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n getParentIndex_(index) {\n return (index - 1) >> 1;\n }\n\n\n /**\n * Make this a heap. O(N).\n * @private\n */\n heapify_() {\n let i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n }\n\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.elements_.length === 0;\n }\n\n\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n isKeyQueued(key) {\n return key in this.queuedElements_;\n }\n\n\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n isQueued(element) {\n return this.isKeyQueued(this.keyFunction_(element));\n }\n\n\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n siftUp_(index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const count = elements.length;\n const element = elements[index];\n const priority = priorities[index];\n const startIndex = index;\n\n while (index < (count >> 1)) {\n const lIndex = this.getLeftChildIndex_(index);\n const rIndex = this.getRightChildIndex_(index);\n\n const smallerChildIndex = rIndex < count &&\n priorities[rIndex] < priorities[lIndex] ?\n rIndex : lIndex;\n\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n }\n\n\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n siftDown_(startIndex, index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[index];\n const priority = priorities[index];\n\n while (index > startIndex) {\n const parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n } else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n }\n\n\n /**\n * FIXME empty description for jsdoc\n */\n reprioritize() {\n const priorityFunction = this.priorityFunction_;\n const elements = this.elements_;\n const priorities = this.priorities_;\n let index = 0;\n const n = elements.length;\n let element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n } else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n }\n\n}\n\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport {listen, unlisten} from './events.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue from './structs/PriorityQueue.js';\n\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\n\n\nclass TileQueue extends PriorityQueue {\n\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n constructor(tilePriorityFunction, tileChangeCallback) {\n\n super(\n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function(element) {\n return tilePriorityFunction.apply(null, element);\n },\n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function(element) {\n return (/** @type {import(\"./Tile.js\").default} */ (element[0]).getKey());\n });\n\n /**\n * @private\n * @type {function(): ?}\n */\n this.tileChangeCallback_ = tileChangeCallback;\n\n /**\n * @private\n * @type {number}\n */\n this.tilesLoading_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.tilesLoadingKeys_ = {};\n\n }\n\n /**\n * @inheritDoc\n */\n enqueue(element) {\n const added = super.enqueue(element);\n if (added) {\n const tile = element[0];\n listen(tile, EventType.CHANGE, this.handleTileChange, this);\n }\n return added;\n }\n\n /**\n * @return {number} Number of tiles loading.\n */\n getTilesLoading() {\n return this.tilesLoading_;\n }\n\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n const state = tile.getState();\n if (state === TileState.LOADED || state === TileState.ERROR ||\n state === TileState.EMPTY || state === TileState.ABORT) {\n unlisten(tile, EventType.CHANGE, this.handleTileChange, this);\n const tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n }\n\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n loadMoreTiles(maxTotalLoading, maxNewLoads) {\n let newLoads = 0;\n let abortedTiles = false;\n let state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.ABORT) {\n abortedTiles = true;\n } else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n if (newLoads === 0 && abortedTiles) {\n // Do not stop the render loop when all wanted tiles were aborted due to\n // a small, saturated tile cache.\n this.tileChangeCallback_();\n }\n }\n}\n\n\nexport default TileQueue;\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined)): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @return {Type} The constraint.\n */\nexport function createExtent(extent) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function(center) {\n if (center) {\n return [\n clamp(center[0], extent[0], extent[2]),\n clamp(center[1], extent[1], extent[3])\n ];\n } else {\n return undefined;\n }\n }\n );\n}\n\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n","/**\n * @module ol/resolutionconstraint\n */\nimport {linearFindNearest} from './array.js';\nimport {clamp} from './math.js';\n\n\n/**\n * @typedef {function((number|undefined), number, number): (number|undefined)} Type\n */\n\n\n/**\n * @param {Array} resolutions Resolutions.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} delta Delta.\n * @param {number} direction Direction.\n * @return {number|undefined} Resolution.\n */\n function(resolution, delta, direction) {\n if (resolution !== undefined) {\n let z = linearFindNearest(resolutions, resolution, direction);\n z = clamp(z + delta, 0, resolutions.length - 1);\n const index = Math.floor(z);\n if (z != index && index < resolutions.length - 1) {\n const power = resolutions[index] / resolutions[index + 1];\n return resolutions[index] / Math.pow(power, z - index);\n } else {\n return resolutions[index];\n }\n } else {\n return undefined;\n }\n }\n );\n}\n\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_maxLevel Maximum level.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_maxLevel) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} delta Delta.\n * @param {number} direction Direction.\n * @return {number|undefined} Resolution.\n */\n function(resolution, delta, direction) {\n if (resolution !== undefined) {\n const offset = -direction / 2 + 0.5;\n const oldLevel = Math.floor(\n Math.log(maxResolution / resolution) / Math.log(power) + offset);\n let newLevel = Math.max(oldLevel + delta, 0);\n if (opt_maxLevel !== undefined) {\n newLevel = Math.min(newLevel, opt_maxLevel);\n }\n return maxResolution / Math.pow(power, newLevel);\n } else {\n return undefined;\n }\n });\n}\n","/**\n * @module ol/rotationconstraint\n */\nimport {toRadians} from './math.js';\n\n\n/**\n * @typedef {function((number|undefined), number): (number|undefined)} Type\n */\n\n\n/**\n * @param {number|undefined} rotation Rotation.\n * @param {number} delta Delta.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation, delta) {\n if (rotation !== undefined) {\n return 0;\n } else {\n return undefined;\n }\n}\n\n\n/**\n * @param {number|undefined} rotation Rotation.\n * @param {number} delta Delta.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation, delta) {\n if (rotation !== undefined) {\n return rotation + delta;\n } else {\n return undefined;\n }\n}\n\n\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n const theta = 2 * Math.PI / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {number} delta Delta.\n * @return {number|undefined} Rotation.\n */\n function(rotation, delta) {\n if (rotation !== undefined) {\n rotation = Math.floor((rotation + delta) / theta + 0.5) * theta;\n return rotation;\n } else {\n return undefined;\n }\n });\n}\n\n\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n const tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {number} delta Delta.\n * @return {number|undefined} Rotation.\n */\n function(rotation, delta) {\n if (rotation !== undefined) {\n if (Math.abs(rotation + delta) <= tolerance) {\n return 0;\n } else {\n return rotation + delta;\n }\n } else {\n return undefined;\n }\n });\n}\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1\n};\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation'\n};\n","/**\n * @module ol/string\n */\n\n/**\n * @param {number} number Number to be formatted\n * @param {number} width The desired width\n * @param {number=} opt_precision Precision of the output string (i.e. number of decimal places)\n * @returns {string} Formatted string\n */\nexport function padNumber(number, width, opt_precision) {\n const numberString = opt_precision !== undefined ? number.toFixed(opt_precision) : '' + number;\n let decimal = numberString.indexOf('.');\n decimal = decimal === -1 ? numberString.length : decimal;\n return decimal > width ? numberString : new Array(1 + width - decimal).join('0') + numberString;\n}\n\n\n/**\n * Adapted from https://github.com/omichelsen/compare-versions/blob/master/index.js\n * @param {string|number} v1 First version\n * @param {string|number} v2 Second version\n * @returns {number} Value\n */\nexport function compareVersions(v1, v2) {\n const s1 = ('' + v1).split('.');\n const s2 = ('' + v2).split('.');\n\n for (let i = 0; i < Math.max(s1.length, s2.length); i++) {\n const n1 = parseInt(s1[i] || '0', 10);\n const n2 = parseInt(s2[i] || '0', 10);\n\n if (n1 > n2) {\n return 1;\n }\n if (n2 > n1) {\n return -1;\n }\n }\n\n return 0;\n}\n","/**\n * @module ol/coordinate\n */\nimport {modulo} from './math.js';\nimport {padNumber} from './string.js';\n\n\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += delta[0];\n coordinate[1] += delta[1];\n return coordinate;\n}\n\n\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n const r = circle.getRadius();\n const center = circle.getCenter();\n const x0 = center[0];\n const y0 = center[1];\n const x1 = coordinate[0];\n const y1 = coordinate[1];\n\n let dx = x1 - x0;\n const dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n const d = Math.sqrt(dx * dx + dy * dy);\n\n const x = x0 + r * dx / d;\n const y = y0 + r * dy / d;\n\n return [x, y];\n}\n\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n const x0 = coordinate[0];\n const y0 = coordinate[1];\n const start = segment[0];\n const end = segment[1];\n const x1 = start[0];\n const y1 = start[1];\n const x2 = end[0];\n const y2 = end[1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const along = (dx === 0 && dy === 0) ? 0 :\n ((dx * (x0 - x1)) + (dy * (y0 - y1))) / ((dx * dx + dy * dy) || 0);\n let x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n } else if (along >= 1) {\n x = x2;\n y = y2;\n } else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function(coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n }\n );\n}\n\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n const x = Math.abs(3600 * normalizedDegrees);\n const dflPrecision = opt_fractionDigits || 0;\n const precision = Math.pow(10, dflPrecision);\n\n let deg = Math.floor(x / 3600);\n let min = Math.floor((x - deg * 3600) / 60);\n let sec = x - (deg * 3600) - (min * 60);\n sec = Math.ceil(sec * precision) / precision;\n\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n\n return deg + '\\u00b0 ' + padNumber(min, 2) + '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) + '\\u2033' +\n (normalizedDegrees == 0 ? '' : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0));\n}\n\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n } else {\n return '';\n }\n}\n\n\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n let equals = true;\n for (let i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n const dx = coord1[0] - coord2[0];\n const dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n\n\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate,\n closestOnSegment(coordinate, segment));\n}\n\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) + ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits);\n } else {\n return '';\n }\n}\n\n\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n","/**\n * @module ol/geom/GeometryLayout\n */\n\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM'\n};\n","/**\n * @module ol/geom/flat/transform\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const x = flatCoordinates[j];\n const y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n","/**\n * @module ol/transform\n */\nimport {assert} from './asserts.js';\n\n\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n */\n\n\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n\n\n/**\n * @private\n * @type {Transform}\n */\nconst tmp_ = new Array(6);\n\n\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n\n\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n\n\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n const a1 = transform1[0];\n const b1 = transform1[1];\n const c1 = transform1[2];\n const d1 = transform1[3];\n const e1 = transform1[4];\n const f1 = transform1[5];\n const a2 = transform2[0];\n const b2 = transform2[1];\n const c2 = transform2[2];\n const d2 = transform2[3];\n const e2 = transform2[4];\n const f2 = transform2[5];\n\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n\n return transform1;\n}\n\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n\n\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n\n\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n const x = coordinate[0];\n const y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n\n\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n\n\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n\n\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n\n\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n const sin = Math.sin(angle);\n const cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n\n\n/**\n * Invert the given transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Inverse of the transform.\n */\nexport function invert(transform) {\n const det = determinant(transform);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n\n const a = transform[0];\n const b = transform[1];\n const c = transform[2];\n const d = transform[3];\n const e = transform[4];\n const f = transform[5];\n\n transform[0] = d / det;\n transform[1] = -b / det;\n transform[2] = -c / det;\n transform[3] = a / det;\n transform[4] = (c * f - d * e) / det;\n transform[5] = -(a * f - b * e) / det;\n\n return transform;\n}\n\n\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n","/**\n * @module ol/geom/Geometry\n */\nimport {abstract} from '../util.js';\nimport BaseObject from '../Object.js';\nimport {createEmpty, getHeight, returnOrUpdate} from '../extent.js';\nimport {transform2D} from './flat/transform.js';\nimport {get as getProjection, getTransform} from '../proj.js';\nimport Units from '../proj/Units.js';\nimport {create as createTransform, compose as composeTransform} from '../transform.js';\n\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nclass Geometry extends BaseObject {\n constructor() {\n\n super();\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = createEmpty();\n\n /**\n * @private\n * @type {number}\n */\n this.extentRevision_ = -1;\n\n /**\n * @protected\n * @type {Object}\n */\n this.simplifiedGeometryCache = {};\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryRevision = 0;\n\n }\n\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n clone() {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n return abstract();\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n return false;\n }\n\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n getClosestPoint(point, opt_closestPoint) {\n const closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n }\n\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n intersectsCoordinate(coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n }\n\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return abstract();\n }\n\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n getExtent(opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n this.extent_ = this.computeExtent(this.extent_);\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n abstract();\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, opt_sy, opt_anchor) {\n abstract();\n }\n\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the the {@link\n * https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm\n * Douglas Peucker} algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n simplify(tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n return abstract();\n }\n\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n getType() {\n return abstract();\n }\n\n /**\n * Apply a transform function to each coordinate of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\n applyTransform(transformFn) {\n abstract();\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n intersectsExtent(extent) {\n return abstract();\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n abstract();\n }\n\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n transform(source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n const sourceProj = getProjection(source);\n const transformFn = sourceProj.getUnits() == Units.TILE_PIXELS ?\n function(inCoordinates, outCoordinates, stride) {\n const pixelExtent = sourceProj.getExtent();\n const projectedExtent = sourceProj.getWorldExtent();\n const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform,\n projectedExtent[0], projectedExtent[3],\n scale, -scale, 0,\n 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride,\n tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n } :\n getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n }\n\n}\n\n\nexport default Geometry;\n","/**\n * @module ol/geom/SimpleGeometry\n */\nimport {abstract} from '../util.js';\nimport {createOrUpdateFromFlatCoordinates, getCenter} from '../extent.js';\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport {rotate, scale, translate, transform2D} from './flat/transform.js';\nimport {clear} from '../obj.js';\n\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nclass SimpleGeometry extends Geometry {\n constructor() {\n\n super();\n\n /**\n * @protected\n * @type {GeometryLayout}\n */\n this.layout = GeometryLayout.XY;\n\n /**\n * @protected\n * @type {number}\n */\n this.stride = 2;\n\n /**\n * @protected\n * @type {Array}\n */\n this.flatCoordinates = null;\n\n }\n\n /**\n * @inheritDoc\n */\n computeExtent(extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates,\n 0, this.flatCoordinates.length, this.stride, extent);\n }\n\n /**\n * @abstract\n * @return {Array} Coordinates.\n */\n getCoordinates() {\n return abstract();\n }\n\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n getFirstCoordinate() {\n return this.flatCoordinates.slice(0, this.stride);\n }\n\n /**\n * @return {Array} Flat coordinates.\n */\n getFlatCoordinates() {\n return this.flatCoordinates;\n }\n\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n getLastCoordinate() {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n }\n\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {GeometryLayout} Layout.\n * @api\n */\n getLayout() {\n return this.layout;\n }\n\n /**\n * @inheritDoc\n */\n getSimplifiedGeometry(squaredTolerance) {\n if (this.simplifiedGeometryRevision != this.getRevision()) {\n clear(this.simplifiedGeometryCache);\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n const key = squaredTolerance.toString();\n if (this.simplifiedGeometryCache.hasOwnProperty(key)) {\n return this.simplifiedGeometryCache[key];\n } else {\n const simplifiedGeometry =\n this.getSimplifiedGeometryInternal(squaredTolerance);\n const simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n this.simplifiedGeometryCache[key] = simplifiedGeometry;\n return simplifiedGeometry;\n } else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n }\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n return this;\n }\n\n /**\n * @return {number} Stride.\n */\n getStride() {\n return this.stride;\n }\n\n /**\n * @param {GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n setFlatCoordinates(layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n }\n\n /**\n * @abstract\n * @param {!Array} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n setCoordinates(coordinates, opt_layout) {\n abstract();\n }\n\n /**\n * @param {GeometryLayout|undefined} layout Layout.\n * @param {Array} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n setLayout(layout, coordinates, nesting) {\n /** @type {number} */\n let stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n } else {\n for (let i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n } else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n }\n\n /**\n * @inheritDoc\n * @api\n */\n applyTransform(transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n }\n\n /**\n * @inheritDoc\n * @api\n */\n rotate(angle, anchor) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n rotate(\n flatCoordinates, 0, flatCoordinates.length,\n stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n }\n\n /**\n * @inheritDoc\n * @api\n */\n scale(sx, opt_sy, opt_anchor) {\n let sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n let anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n scale(\n flatCoordinates, 0, flatCoordinates.length,\n stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n }\n\n /**\n * @inheritDoc\n * @api\n */\n translate(deltaX, deltaY) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n translate(\n flatCoordinates, 0, flatCoordinates.length, stride,\n deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n }\n}\n\n\n/**\n * @param {number} stride Stride.\n * @return {GeometryLayout} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n let layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n } else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n } else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return (\n /** @type {GeometryLayout} */ (layout)\n );\n}\n\n\n/**\n * @param {GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n let stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n } else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n } else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n\n\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n const flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n } else {\n const stride = simpleGeometry.getStride();\n return transform2D(\n flatCoordinates, 0, flatCoordinates.length, stride,\n transform, opt_dest);\n }\n}\n\nexport default SimpleGeometry;\n","/**\n * @module ol/geom/flat/area\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n let twiceArea = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n let area = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n let area = 0;\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n","/**\n * @module ol/geom/flat/closest\n */\nimport {lerp, squaredDistance as squaredDx} from '../../math.js';\n\n\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n const x1 = flatCoordinates[offset1];\n const y1 = flatCoordinates[offset1 + 1];\n const dx = flatCoordinates[offset2] - x1;\n const dy = flatCoordinates[offset2 + 1] - y1;\n let offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n } else {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n } else if (t > 0) {\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i],\n flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n } else {\n offset = offset1;\n }\n }\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n\n\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n const squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n max = maxSquaredDelta(\n flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n max = arrayMaxSquaredDelta(\n flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end,\n stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,\n opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n let i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(\n x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n } else {\n return minSquaredDistance;\n }\n }\n const tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n let index = offset + stride;\n while (index < end) {\n assignClosest(\n flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n } else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index += stride * Math.max(\n ((Math.sqrt(squaredDistance) -\n Math.sqrt(minSquaredDistance)) / maxDelta) | 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(\n flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends,\n stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,\n opt_tmpPoint) {\n const tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n minSquaredDistance = assignClosestPoint(\n flatCoordinates, offset, end, stride,\n maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset,\n endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,\n opt_tmpPoint) {\n const tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(\n flatCoordinates, offset, ends, stride,\n maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n","/**\n * @module ol/geom/flat/deflate\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (let i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n const coordinate = coordinates[i];\n for (let j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array=} opt_ends Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n const ends = opt_ends ? opt_ends : [];\n let i = 0;\n for (let j = 0, jj = coordinatess.length; j < jj; ++j) {\n const end = deflateCoordinates(\n flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>=} opt_endss Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n const endss = opt_endss ? opt_endss : [];\n let i = 0;\n for (let j = 0, jj = coordinatesss.length; j < jj; ++j) {\n const ends = deflateCoordinatesArray(\n flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n","/**\n * @module ol/geom/flat/inflate\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array=} opt_coordinates Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n const coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>=} opt_coordinatess Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n const coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n let i = 0;\n for (let j = 0, jj = ends.length; j < jj; ++j) {\n const end = ends[j];\n coordinatess[i++] = inflateCoordinates(\n flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>=} opt_coordinatesss\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n const coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n let i = 0;\n for (let j = 0, jj = endss.length; j < jj; ++j) {\n const ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(\n flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\n\nimport {squaredSegmentDistance, squaredDistance} from '../../math.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array=} opt_simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end,\n stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n const simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined ?\n opt_simplifiedFlatCoordinates : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end,\n stride, squaredTolerance,\n simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(\n flatCoordinates, offset, end, stride, squaredTolerance,\n simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end,\n stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n const n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n const markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n const stack = [offset, end - stride];\n let index = 0;\n while (stack.length > 0) {\n const last = stack.pop();\n const first = stack.pop();\n let maxSquaredDistance = 0;\n const x1 = flatCoordinates[first];\n const y1 = flatCoordinates[first + 1];\n const x2 = flatCoordinates[last];\n const y2 = flatCoordinates[last + 1];\n for (let i = first + stride; i < last; i += stride) {\n const x = flatCoordinates[i];\n const y = flatCoordinates[i + 1];\n const squaredDistance = squaredSegmentDistance(\n x, y, x1, y1, x2, y2);\n if (squaredDistance > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (let i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset,\n ends, stride, squaredTolerance, simplifiedFlatCoordinates,\n simplifiedOffset, simplifiedEnds) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = douglasPeucker(\n flatCoordinates, offset, end, stride, squaredTolerance,\n simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(\n flatCoordinates, offset, endss, stride, squaredTolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(\n flatCoordinates, offset, ends, stride, squaredTolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end,\n stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n let x2 = x1;\n let y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n\n\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride,\n tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n let x1 = snap(flatCoordinates[offset], tolerance);\n let y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n let x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n const x3 = snap(flatCoordinates[offset], tolerance);\n const y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n const dx1 = x2 - x1;\n const dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n const dx2 = x3 - x1;\n const dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if ((dx1 * dy2 == dy1 * dx2) &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(\n flatCoordinates, offset, ends, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = quantize(\n flatCoordinates, offset, end, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(\n flatCoordinates, offset, endss, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = quantizeArray(\n flatCoordinates, offset, ends, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n","/**\n * @module ol/geom/LinearRing\n */\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {linearRing as linearRingArea} from './flat/area.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {douglasPeucker} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nclass LinearRing extends SimpleGeometry {\n\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n constructor(coordinates, opt_layout) {\n\n super();\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n } else {\n this.setCoordinates(/** @type {Array} */ (coordinates), opt_layout);\n }\n\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @override\n * @api\n */\n clone() {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n }\n\n /**\n * @inheritDoc\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride,\n this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n }\n\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n }\n\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @override\n * @api\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n }\n\n /**\n * @inheritDoc\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride,\n squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n getType() {\n return GeometryType.LINEAR_RING;\n }\n\n /**\n * @inheritDoc\n */\n intersectsExtent(extent) {\n return false;\n }\n\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n setCoordinates(coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n }\n}\n\n\nexport default LinearRing;\n","/**\n * @module ol/geom/Point\n */\nimport {createOrUpdateFromCoordinate, containsXY} from '../extent.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {deflateCoordinate} from './flat/deflate.js';\nimport {squaredDistance as squaredDx} from '../math.js';\n\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nclass Point extends SimpleGeometry {\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n constructor(coordinates, opt_layout) {\n super();\n this.setCoordinates(coordinates, opt_layout);\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @override\n * @api\n */\n clone() {\n const point = new Point(this.flatCoordinates.slice(), this.layout);\n return point;\n }\n\n /**\n * @inheritDoc\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n const flatCoordinates = this.flatCoordinates;\n const squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n const stride = this.stride;\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n } else {\n return minSquaredDistance;\n }\n }\n\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @override\n * @api\n */\n getCoordinates() {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n }\n\n /**\n * @inheritDoc\n */\n computeExtent(extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n getType() {\n return GeometryType.POINT;\n }\n\n /**\n * @inheritDoc\n * @api\n */\n intersectsExtent(extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n setCoordinates(coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(\n this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n }\n}\n\n\nexport default Point;\n","/**\n * @module ol/geom/flat/contains\n */\nimport {forEachCorner} from '../../extent.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n const outside = forEachCorner(extent,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function(coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // http://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n let wn = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && ((x2 - x1) * (y - y1)) - ((x - x1) * (y2 - y1)) > 0) {\n wn++;\n }\n } else if (y2 <= y && ((x2 - x1) * (y - y1)) - ((x - x1) * (y2 - y1)) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport {numberSafeCompareFunction} from '../../array.js';\nimport {linearRingsContainsXY} from './contains.js';\n\n\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset,\n ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n let i, ii, x, x1, x2, y1, y2;\n const y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n const intersections = [];\n // Calculate intersections with the horizontal line\n for (let r = 0, rr = ends.length; r < rr; ++r) {\n const end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = (y - y1) / (y2 - y1) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n let pointX = NaN;\n let maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n const segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n } else {\n return [pointX, y, maxSegmentLength];\n }\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n let interiorPoints = [];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates,\n offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n","/**\n * @module ol/geom/flat/segments\n */\n\n\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(this: S, import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @param {S=} opt_this The object to be used as the value of 'this'\n * within callback.\n * @return {T|boolean} Value.\n * @template T,S\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback, opt_this) {\n const point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n const point2 = [];\n let ret;\n for (; (offset + stride) < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback.call(opt_this, point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport {containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment} from '../../extent.js';\nimport {linearRingContainsXY, linearRingContainsExtent} from './contains.js';\nimport {forEach as forEachSegment} from './segments.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n const coordinatesExtent = extendFlatCoordinates(\n createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] &&\n coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] &&\n coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function(point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(\n flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(\n flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(\n flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (intersectsLinearRingArray(\n flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/reverse\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (let i = 0; i < stride; ++i) {\n const tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n","/**\n * @module ol/geom/flat/orient\n */\nimport {coordinates as reverseCoordinates} from './reverse.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // http://tinyurl.com/clockwise-method\n // https://github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cpp\n let edge = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge > 0;\n}\n\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingIsOriented(flatCoordinates, offset, ends, stride, opt_right) {\n const right = opt_right !== undefined ? opt_right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n } else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n if (!linearRingIsOriented(\n flatCoordinates, offset, endss[i], stride, opt_right)) {\n return false;\n }\n }\n return true;\n}\n\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n const right = opt_right !== undefined ? opt_right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates, offset, end, stride);\n const reverse = i === 0 ?\n (right && isClockwise) || (!right && !isClockwise) :\n (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(\n flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n","/**\n * @module ol/geom/Polygon\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY, getCenter} from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {offset as sphereOffset} from '../sphere.js';\nimport {linearRings as linearRingsArea} from './flat/area.js';\nimport {assignClosestArrayPoint, arrayMaxSquaredDelta} from './flat/closest.js';\nimport {linearRingsContainsXY} from './flat/contains.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {getInteriorPointOfArray} from './flat/interiorpoint.js';\nimport {intersectsLinearRingArray} from './flat/intersectsextent.js';\nimport {linearRingIsOriented, orientLinearRings} from './flat/orient.js';\nimport {quantizeArray} from './flat/simplify.js';\nimport {modulo} from '../math.js';\n\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nclass Polygon extends SimpleGeometry {\n\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {GeometryLayout=} opt_layout Layout.\n * @param {Array=} opt_ends Ends (for internal use with flat coordinates).\n */\n constructor(coordinates, opt_layout, opt_ends) {\n\n super();\n\n /**\n * @type {Array}\n * @private\n */\n this.ends_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.flatInteriorPointRevision_ = -1;\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.flatInteriorPoint_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.orientedRevision_ = -1;\n\n /**\n * @private\n * @type {Array}\n */\n this.orientedFlatCoordinates_ = null;\n\n if (opt_layout !== undefined && opt_ends) {\n this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n this.ends_ = opt_ends;\n } else {\n this.setCoordinates(/** @type {Array>} */ (coordinates), opt_layout);\n }\n\n }\n\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n appendLinearRing(linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n } else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @override\n * @api\n */\n clone() {\n return new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n }\n\n /**\n * @inheritDoc\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(\n this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(\n this.flatCoordinates, 0, this.ends_, this.stride,\n this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n }\n\n /**\n * @inheritDoc\n */\n containsXY(x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n }\n\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n }\n\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @override\n * @api\n */\n getCoordinates(opt_right) {\n let flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(\n flatCoordinates, 0, this.ends_, this.stride, opt_right);\n } else {\n flatCoordinates = this.flatCoordinates;\n }\n\n return inflateCoordinatesArray(\n flatCoordinates, 0, this.ends_, this.stride);\n }\n\n /**\n * @return {Array} Ends.\n */\n getEnds() {\n return this.ends_;\n }\n\n /**\n * @return {Array} Interior point.\n */\n getFlatInteriorPoint() {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n const flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(\n this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride,\n flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n }\n\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n getInteriorPoint() {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n }\n\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n getLinearRingCount() {\n return this.ends_.length;\n }\n\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing} Linear ring.\n * @api\n */\n getLinearRing(index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(\n index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n }\n\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n getLinearRings() {\n const layout = this.layout;\n const flatCoordinates = this.flatCoordinates;\n const ends = this.ends_;\n const linearRings = [];\n let offset = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n }\n\n /**\n * @return {Array} Oriented flat coordinates.\n */\n getOrientedFlatCoordinates() {\n if (this.orientedRevision_ != this.getRevision()) {\n const flatCoordinates = this.flatCoordinates;\n if (linearRingIsOriented(\n flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n } else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length =\n orientLinearRings(\n this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n }\n\n /**\n * @inheritDoc\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n const simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(\n this.flatCoordinates, 0, this.ends_, this.stride,\n Math.sqrt(squaredTolerance),\n simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n getType() {\n return GeometryType.POLYGON;\n }\n\n /**\n * @inheritDoc\n * @api\n */\n intersectsExtent(extent) {\n return intersectsLinearRingArray(\n this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n }\n\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n setCoordinates(coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n const ends = deflateCoordinatesArray(\n this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n }\n}\n\n\nexport default Polygon;\n\n\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices.\n * @param {number=} opt_n Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number=} opt_sphereRadius Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n const n = opt_n ? opt_n : 32;\n /** @type {Array} */\n const flatCoordinates = [];\n for (let i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, 2 * Math.PI * i / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\n}\n\n\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const flatCoordinates =\n [minX, minY, minX, maxY, maxX, maxY, maxX, minY, minX, minY];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\n}\n\n\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n const sides = opt_sides ? opt_sides : 32;\n const stride = circle.getStride();\n const layout = circle.getLayout();\n const center = circle.getCenter();\n const arrayLength = stride * (sides + 1);\n const flatCoordinates = new Array(arrayLength);\n for (let i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (let j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n const ends = [flatCoordinates.length];\n const polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n\n\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n const flatCoordinates = polygon.getFlatCoordinates();\n const stride = polygon.getStride();\n const sides = flatCoordinates.length / stride - 1;\n const startAngle = opt_angle ? opt_angle : 0;\n for (let i = 0; i <= sides; ++i) {\n const offset = i * stride;\n const angle = startAngle + (modulo(i, sides) * 2 * Math.PI / sides);\n flatCoordinates[offset] = center[0] + (radius * Math.cos(angle));\n flatCoordinates[offset + 1] = center[1] + (radius * Math.sin(angle));\n }\n polygon.changed();\n}\n","/**\n * @module ol/View\n */\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\nimport {getUid} from './util.js';\nimport {VOID} from './functions.js';\nimport {createExtent, none as centerNone} from './centerconstraint.js';\nimport BaseObject from './Object.js';\nimport {createSnapToResolutions, createSnapToPower} from './resolutionconstraint.js';\nimport {createSnapToZero, createSnapToN, none as rotationNone, disable} from './rotationconstraint.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {linearFindNearest} from './array.js';\nimport {assert} from './asserts.js';\nimport {add as addCoordinate, rotate as rotateCoordinate, equals as coordinatesEqual} from './coordinate.js';\nimport {inAndOut} from './easing.js';\nimport {getForViewAndSize, getCenter, getHeight, getWidth, isEmpty} from './extent.js';\nimport GeometryType from './geom/GeometryType.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\nimport {clamp, modulo} from './math.js';\nimport {assign} from './obj.js';\nimport {createProjection, METERS_PER_UNIT} from './proj.js';\nimport Units from './proj/Units.js';\n\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean)} callback\n */\n\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [constrainResolution=true] Constrain the resolution.\n * @property {boolean} [nearest=false] If `constrainResolution` is `true`, get\n * the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean)} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n\n\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. The coordinate system for the center is specified with the\n * `projection` option. Layer sources will not be fetched if this is not set,\n * but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * center, in other words, center cannot be set outside this extent.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view. The initial\n * resolution is determined using the {@link #constrainResolution} method.\n * @property {number} [zoomFactor=2] The zoom factor used to determine the\n * resolution constraint.\n */\n\n\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remained fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n\n\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * ### The view states\n *\n * An View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * An View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view. Any value can be passed to the setters. And the value\n * that is passed to a setter will effectively be the value set in the view,\n * and returned by the corresponding getter.\n *\n * But a View object also has a *resolution constraint*, a\n * *rotation constraint* and a *center constraint*.\n *\n * As said above, no constraints are applied when the setters are used to set\n * new states for the view. Applying constraints is done explicitly through\n * the use of the `constrain*` functions (`constrainResolution` and\n * `constrainRotation` and `constrainCenter`).\n *\n * The main users of the constraints are the interactions and the\n * controls. For example, double-clicking on the map changes the view to\n * the \"next\" resolution. And releasing the fingers after pinch-zooming\n * snaps to the closest resolution (with an animation).\n *\n * The *resolution constraint* snaps to specific resolutions. It is\n * determined by the following options: `resolutions`, `maxResolution`,\n * `maxZoom`, and `zoomFactor`. If `resolutions` is set, the other three\n * options are ignored. See documentation for each option for more\n * information.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default the rotation value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the center is not constrained at all.\n *\n * @api\n */\nclass View extends BaseObject {\n\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n constructor(opt_options) {\n super();\n\n const options = assign({}, opt_options);\n\n /**\n * @private\n * @type {Array}\n */\n this.hints_ = [0, 0];\n\n /**\n * @private\n * @type {Array>}\n */\n this.animations_ = [];\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.updateAnimationKey_;\n\n this.updateAnimations_ = this.updateAnimations_.bind(this);\n\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection_ = createProjection(options.projection, 'EPSG:3857');\n\n this.applyOptions_(options);\n }\n\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n applyOptions_(options) {\n\n /**\n * @type {Object}\n */\n const properties = {};\n properties[ViewProperty.CENTER] = options.center !== undefined ?\n options.center : null;\n\n const resolutionConstraintInfo = createResolutionConstraint(options);\n\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n\n const centerConstraint = createCenterConstraint(options);\n const resolutionConstraint = resolutionConstraintInfo.constraint;\n const rotationConstraint = createRotationConstraint(options);\n\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint\n };\n\n if (options.resolution !== undefined) {\n properties[ViewProperty.RESOLUTION] = options.resolution;\n } else if (options.zoom !== undefined) {\n properties[ViewProperty.RESOLUTION] = this.constrainResolution(\n this.maxResolution_, options.zoom - this.minZoom_);\n\n if (this.resolutions_) { // in case map zoom is out of min/max zoom range\n properties[ViewProperty.RESOLUTION] = clamp(\n Number(this.getResolution() || properties[ViewProperty.RESOLUTION]),\n this.minResolution_, this.maxResolution_);\n }\n }\n properties[ViewProperty.ROTATION] = options.rotation !== undefined ? options.rotation : 0;\n this.setProperties(properties);\n\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n\n }\n\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n getUpdatedOptions_(newOptions) {\n const options = assign({}, this.options_);\n\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n } else {\n options.zoom = this.getZoom();\n }\n\n // preserve center\n options.center = this.getCenter();\n\n // preserve rotation\n options.rotation = this.getRotation();\n\n return assign({}, options, newOptions);\n }\n\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean))} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n animate(var_args) {\n let animationCount = arguments.length;\n let callback;\n if (animationCount > 1 && typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n const state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenter(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n let start = Date.now();\n let center = this.getCenter().slice();\n let resolution = this.getResolution();\n let rotation = this.getRotation();\n const series = [];\n for (let i = 0; i < animationCount; ++i) {\n const options = /** @type {AnimationOptions} */ (arguments[i]);\n\n const animation = /** @type {Animation} */ ({\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut\n });\n\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center;\n center = animation.targetCenter;\n }\n\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.constrainResolution(\n this.maxResolution_, options.zoom - this.minZoom_, 0);\n resolution = animation.targetResolution;\n } else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n const delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n\n animation.callback = callback;\n\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n } else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n }\n\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n getAnimating() {\n return this.hints_[ViewHint.ANIMATING] > 0;\n }\n\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n getInteracting() {\n return this.hints_[ViewHint.INTERACTING] > 0;\n }\n\n /**\n * Cancel any ongoing animations.\n * @api\n */\n cancelAnimations() {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n for (let i = 0, ii = this.animations_.length; i < ii; ++i) {\n const series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n }\n this.animations_.length = 0;\n }\n\n /**\n * Update all animations.\n */\n updateAnimations_() {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n const now = Date.now();\n let more = false;\n for (let i = this.animations_.length - 1; i >= 0; --i) {\n const series = this.animations_[i];\n let seriesComplete = true;\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (animation.complete) {\n continue;\n }\n const elapsed = now - animation.start;\n let fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n } else {\n seriesComplete = false;\n }\n const progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n const x0 = animation.sourceCenter[0];\n const y0 = animation.sourceCenter[1];\n const x1 = animation.targetCenter[0];\n const y1 = animation.targetCenter[1];\n const x = x0 + progress * (x1 - x0);\n const y = y0 + progress * (y1 - y0);\n this.set(ViewProperty.CENTER, [x, y]);\n }\n if (animation.sourceResolution && animation.targetResolution) {\n const resolution = progress === 1 ?\n animation.targetResolution :\n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n this.set(ViewProperty.CENTER,\n this.calculateCenterZoom(resolution, animation.anchor));\n }\n this.set(ViewProperty.RESOLUTION, resolution);\n }\n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {\n const rotation = progress === 1 ?\n modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI :\n animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n this.set(ViewProperty.CENTER,\n this.calculateCenterRotate(rotation, animation.anchor));\n }\n this.set(ViewProperty.ROTATION, rotation);\n }\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n const callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_);\n }\n }\n\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n calculateCenterRotate(rotation, anchor) {\n let center;\n const currentCenter = this.getCenter();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n }\n\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n calculateCenterZoom(resolution, anchor) {\n let center;\n const currentCenter = this.getCenter();\n const currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n const x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution;\n const y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution;\n center = [x, y];\n }\n return center;\n }\n\n /**\n * @private\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n getSizeFromViewport_() {\n const size = [100, 100];\n const selector = '.ol-viewport[data-view=\"' + getUid(this) + '\"]';\n const element = document.querySelector(selector);\n if (element) {\n const metrics = getComputedStyle(element);\n size[0] = parseInt(metrics.width, 10);\n size[1] = parseInt(metrics.height, 10);\n }\n return size;\n }\n\n /**\n * Get the constrained center of this view.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Constrained center.\n * @api\n */\n constrainCenter(center) {\n return this.constraints_.center(center);\n }\n\n /**\n * Get the constrained resolution of this view.\n * @param {number|undefined} resolution Resolution.\n * @param {number=} opt_delta Delta. Default is `0`.\n * @param {number=} opt_direction Direction. Default is `0`.\n * @return {number|undefined} Constrained resolution.\n * @api\n */\n constrainResolution(resolution, opt_delta, opt_direction) {\n const delta = opt_delta || 0;\n const direction = opt_direction || 0;\n return this.constraints_.resolution(resolution, delta, direction);\n }\n\n /**\n * Get the constrained rotation of this view.\n * @param {number|undefined} rotation Rotation.\n * @param {number=} opt_delta Delta. Default is `0`.\n * @return {number|undefined} Constrained rotation.\n * @api\n */\n constrainRotation(rotation, opt_delta) {\n const delta = opt_delta || 0;\n return this.constraints_.rotation(rotation, delta);\n }\n\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n getCenter() {\n return (\n /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER))\n );\n }\n\n /**\n * @return {Constraints} Constraints.\n */\n getConstraints() {\n return this.constraints_;\n }\n\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n getHints(opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n } else {\n return this.hints_.slice();\n }\n }\n\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n calculateExtent(opt_size) {\n const size = opt_size || this.getSizeFromViewport_();\n const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenter());\n assert(center, 1); // The view center is not defined\n const resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n const rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n\n return getForViewAndSize(center, resolution, rotation, size);\n }\n\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n getMaxResolution() {\n return this.maxResolution_;\n }\n\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n getMinResolution() {\n return this.minResolution_;\n }\n\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n }\n\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n setMaxZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));\n }\n\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n }\n\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n setMinZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));\n }\n\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n getProjection() {\n return this.projection_;\n }\n\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n getResolution() {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n }\n\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n getResolutions() {\n return this.resolutions_;\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n getResolutionForExtent(extent, opt_size) {\n const size = opt_size || this.getSizeFromViewport_();\n const xResolution = getWidth(extent) / size[0];\n const yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n }\n\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n getResolutionForValueFunction(opt_power) {\n const power = opt_power || 2;\n const maxResolution = this.maxResolution_;\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function(value) {\n const resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n }\n\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n getRotation() {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n }\n\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n getValueForResolutionFunction(opt_power) {\n const power = opt_power || 2;\n const maxResolution = this.maxResolution_;\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function(resolution) {\n const value = (Math.log(maxResolution / resolution) / Math.log(power)) / max;\n return value;\n });\n }\n\n /**\n * @param {number} pixelRatio Pixel ratio for center rounding.\n * @return {State} View state.\n */\n getState(pixelRatio) {\n const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenter());\n const projection = this.getProjection();\n const resolution = /** @type {number} */ (this.getResolution());\n const pixelResolution = resolution / pixelRatio;\n const rotation = this.getRotation();\n return (\n /** @type {State} */ ({\n center: [\n Math.round(center[0] / pixelResolution) * pixelResolution,\n Math.round(center[1] / pixelResolution) * pixelResolution\n ],\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom()\n })\n );\n }\n\n /**\n * Get the current zoom level. If you configured your view with a resolutions\n * array (this is rare), this method may return non-integer zoom levels (so\n * the zoom level is not safe to use as an index into a resolutions array).\n * @return {number|undefined} Zoom.\n * @api\n */\n getZoom() {\n let zoom;\n const resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n }\n\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n getZoomForResolution(resolution) {\n let offset = this.minZoom_ || 0;\n let max, zoomFactor;\n if (this.resolutions_) {\n const nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n } else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n } else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n }\n\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n getResolutionForZoom(zoom) {\n return /** @type {number} */ (this.constrainResolution(\n this.maxResolution_, zoom - this.minZoom_, 0));\n }\n\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n fit(geometryOrExtent, opt_options) {\n const options = opt_options || {};\n let size = options.size;\n if (!size) {\n size = this.getSizeFromViewport_();\n }\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n let geometry;\n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function',\n 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent),\n 25); // Cannot fit empty extent provided as `geometry`\n geometry = polygonFromExtent(geometryOrExtent);\n } else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n geometryOrExtent = geometryOrExtent.getExtent();\n geometry = polygonFromExtent(geometryOrExtent);\n geometry.rotate(this.getRotation(), getCenter(geometryOrExtent));\n } else {\n geometry = geometryOrExtent;\n }\n\n const padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n const constrainResolution = options.constrainResolution !== undefined ?\n options.constrainResolution : true;\n const nearest = options.nearest !== undefined ? options.nearest : false;\n let minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n } else if (options.maxZoom !== undefined) {\n minResolution = this.constrainResolution(\n this.maxResolution_, options.maxZoom - this.minZoom_, 0);\n } else {\n minResolution = 0;\n }\n const coords = geometry.getFlatCoordinates();\n\n // calculate rotated extent\n const rotation = this.getRotation();\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let minRotX = +Infinity;\n let minRotY = +Infinity;\n let maxRotX = -Infinity;\n let maxRotY = -Infinity;\n const stride = geometry.getStride();\n for (let i = 0, ii = coords.length; i < ii; i += stride) {\n const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n\n // calculate resolution\n let resolution = this.getResolutionForExtent(\n [minRotX, minRotY, maxRotX, maxRotY],\n [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution) ? minResolution :\n Math.max(resolution, minResolution);\n if (constrainResolution) {\n let constrainedResolution = this.constrainResolution(resolution, 0, 0);\n if (!nearest && constrainedResolution < resolution) {\n constrainedResolution = this.constrainResolution(\n constrainedResolution, -1, 0);\n }\n resolution = constrainedResolution;\n }\n\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n let centerRotX = (minRotX + maxRotX) / 2;\n let centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += (padding[1] - padding[3]) / 2 * resolution;\n centerRotY += (padding[0] - padding[2]) / 2 * resolution;\n const centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n const centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n const center = [centerX, centerY];\n const callback = options.callback ? options.callback : VOID;\n\n if (options.duration !== undefined) {\n this.animate({\n resolution: resolution,\n center: center,\n duration: options.duration,\n easing: options.easing\n }, callback);\n } else {\n this.setResolution(resolution);\n this.setCenter(center);\n animationCallback(callback, true);\n }\n }\n\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n centerOn(coordinate, size, position) {\n // calculate rotated position\n const rotation = this.getRotation();\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n const resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n const centerX = rotX * cosAngle - rotY * sinAngle;\n const centerY = rotY * cosAngle + rotX * sinAngle;\n\n this.setCenter([centerX, centerY]);\n }\n\n /**\n * @return {boolean} Is defined.\n */\n isDef() {\n return !!this.getCenter() && this.getResolution() !== undefined;\n }\n\n /**\n * Rotate the view around a given coordinate.\n * @param {number} rotation New rotation value for the view.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n rotate(rotation, opt_anchor) {\n if (opt_anchor !== undefined) {\n const center = this.calculateCenterRotate(rotation, opt_anchor);\n this.setCenter(center);\n }\n this.setRotation(rotation);\n }\n\n /**\n * Set the center of the current view.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n setCenter(center) {\n this.set(ViewProperty.CENTER, center);\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n }\n\n /**\n * @param {ViewHint} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n setHint(hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n }\n\n /**\n * Set the resolution for this view.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n setResolution(resolution) {\n this.set(ViewProperty.RESOLUTION, resolution);\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n }\n\n /**\n * Set the rotation for this view.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n setRotation(rotation) {\n this.set(ViewProperty.ROTATION, rotation);\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n }\n\n /**\n * Zoom to a specific zoom level.\n * @param {number} zoom Zoom level.\n * @api\n */\n setZoom(zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n }\n}\n\n\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function() {\n callback(returnValue);\n }, 0);\n}\n\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n return createExtent(options.extent);\n } else {\n return centerNone;\n }\n}\n\n\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n let resolutionConstraint;\n let maxResolution;\n let minResolution;\n\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n const defaultMaxZoom = 28;\n const defaultZoomFactor = 2;\n\n let minZoom = options.minZoom !== undefined ?\n options.minZoom : DEFAULT_MIN_ZOOM;\n\n let maxZoom = options.maxZoom !== undefined ?\n options.maxZoom : defaultMaxZoom;\n\n const zoomFactor = options.zoomFactor !== undefined ?\n options.zoomFactor : defaultZoomFactor;\n\n if (options.resolutions !== undefined) {\n const resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution = resolutions[maxZoom] !== undefined ?\n resolutions[maxZoom] : resolutions[resolutions.length - 1];\n resolutionConstraint = createSnapToResolutions(\n resolutions);\n } else {\n // calculate the default min and max resolution\n const projection = createProjection(options.projection, 'EPSG:3857');\n const extent = projection.getExtent();\n const size = !extent ?\n // use an extent that can fit the whole world if need be\n 360 * METERS_PER_UNIT[Units.DEGREES] /\n projection.getMetersPerUnit() :\n Math.max(getWidth(extent), getHeight(extent));\n\n const defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(\n defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n const defaultMinResolution = defaultMaxResolution / Math.pow(\n defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n } else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n } else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n } else {\n minResolution = defaultMinResolution;\n }\n }\n\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom = minZoom + Math.floor(\n Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n resolutionConstraint = createSnapToPower(\n zoomFactor, maxResolution, maxZoom - minZoom);\n }\n return {constraint: resolutionConstraint, maxResolution: maxResolution,\n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor};\n}\n\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n const enableRotation = options.enableRotation !== undefined ?\n options.enableRotation : true;\n if (enableRotation) {\n const constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n } else if (constrainRotation === false) {\n return rotationNone;\n } else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n } else {\n return rotationNone;\n }\n } else {\n return disable;\n }\n}\n\n\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\n\nexport default View;\n","/**\n * @module ol/layer/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n SOURCE: 'source'\n};\n","/**\n * @module ol/layer/Base\n */\nimport {abstract} from '../util.js';\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport {clamp} from '../math.js';\nimport {assign} from '../obj.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n */\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nclass BaseLayer extends BaseObject {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n\n super();\n\n /**\n * @type {Object}\n */\n const properties = assign({}, options);\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n\n this.setProperties(properties);\n\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n this.state_ = null;\n\n /**\n * The layer type.\n * @type {import(\"../LayerType.js\").default}\n * @protected;\n */\n this.type;\n\n }\n\n /**\n * Get the layer type (used when creating a layer renderer).\n * @return {import(\"../LayerType.js\").default} The layer type.\n */\n getType() {\n return this.type;\n }\n\n /**\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n getLayerState() {\n /** @type {import(\"./Layer.js\").State} */\n const state = this.state_ || /** @type {?} */ ({\n layer: this,\n managed: true\n });\n state.opacity = clamp(this.getOpacity(), 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = this.getZIndex() || 0;\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n this.state_ = state;\n\n return state;\n }\n\n /**\n * @abstract\n * @param {Array=} opt_array Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n getLayersArray(opt_array) {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {Array=} opt_states Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n getLayerStatesArray(opt_states) {\n return abstract();\n }\n\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n getExtent() {\n return (\n /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT))\n );\n }\n\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n getMaxResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n }\n\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n getMinResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n }\n\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n getOpacity() {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n }\n\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n getSourceState() {\n return abstract();\n }\n\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n getVisible() {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n }\n\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n getZIndex() {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n }\n\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n setExtent(extent) {\n this.set(LayerProperty.EXTENT, extent);\n }\n\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n setMaxResolution(maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n }\n\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n setMinResolution(minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n }\n\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n setOpacity(opacity) {\n this.set(LayerProperty.OPACITY, opacity);\n }\n\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n setVisible(visible) {\n this.set(LayerProperty.VISIBLE, visible);\n }\n\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n setZIndex(zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n }\n}\n\n\nexport default BaseLayer;\n","/**\n * @module ol/layer/Group\n */\nimport {getUid} from '../util.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport {getChangeEventType} from '../Object.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport {assert} from '../asserts.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {getIntersection} from '../extent.js';\nimport BaseLayer from './Base.js';\nimport {assign, clear} from '../obj.js';\nimport SourceState from '../source/State.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LAYERS: 'layers'\n};\n\n\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nclass LayerGroup extends BaseLayer {\n /**\n * @param {Options=} opt_options Layer options.\n */\n constructor(opt_options) {\n\n const options = opt_options || {};\n const baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n\n let layers = options.layers;\n\n super(baseOptions);\n\n /**\n * @private\n * @type {Array}\n */\n this.layersListenerKeys_ = [];\n\n /**\n * @private\n * @type {Object>}\n */\n this.listenerKeys_ = {};\n\n listen(this,\n getChangeEventType(Property.LAYERS),\n this.handleLayersChanged_, this);\n\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), {unique: true});\n } else {\n assert(typeof /** @type {?} */ (layers).getArray === 'function',\n 43); // Expected `layers` to be an array or a `Collection`\n }\n } else {\n layers = new Collection(undefined, {unique: true});\n }\n\n this.setLayers(layers);\n\n }\n\n /**\n * @private\n */\n handleLayerChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleLayersChanged_() {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n\n const layers = this.getLayers();\n this.layersListenerKeys_.push(\n listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this),\n listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this)\n );\n\n for (const id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n\n const layersArray = layers.getArray();\n for (let i = 0, ii = layersArray.length; i < ii; i++) {\n const layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n }\n\n this.changed();\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n handleLayersAdd_(collectionEvent) {\n const layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n this.changed();\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n handleLayersRemove_(collectionEvent) {\n const layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n const key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n }\n\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n getLayers() {\n return (\n /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS))\n );\n }\n\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n setLayers(layers) {\n this.set(Property.LAYERS, layers);\n }\n\n /**\n * @inheritDoc\n */\n getLayersArray(opt_array) {\n const array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function(layer) {\n layer.getLayersArray(array);\n });\n return array;\n }\n\n /**\n * @inheritDoc\n */\n getLayerStatesArray(opt_states) {\n const states = opt_states !== undefined ? opt_states : [];\n\n const pos = states.length;\n\n this.getLayers().forEach(function(layer) {\n layer.getLayerStatesArray(states);\n });\n\n const ownLayerState = this.getLayerState();\n for (let i = pos, ii = states.length; i < ii; i++) {\n const layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(\n layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(\n layerState.minResolution, ownLayerState.minResolution);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n } else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n\n return states;\n }\n\n /**\n * @inheritDoc\n */\n getSourceState() {\n return SourceState.READY;\n }\n}\n\n\nexport default LayerGroup;\n","/**\n * @module ol/PluggableMap\n */\nimport {getUid} from './util.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport RenderEventType from './render/EventType.js';\nimport BaseObject, {getChangeEventType} from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {assert} from './asserts.js';\nimport {removeNode} from './dom.js';\nimport {listen, unlistenByKey, unlisten} from './events.js';\nimport {stopPropagation} from './events/Event.js';\nimport EventType from './events/EventType.js';\nimport {createEmpty, clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty} from './extent.js';\nimport {TRUE} from './functions.js';\nimport {DEVICE_PIXEL_RATIO, TOUCH} from './has.js';\nimport LayerGroup from './layer/Group.js';\nimport {hasArea} from './size.js';\nimport {DROP} from './structs/PriorityQueue.js';\nimport {create as createTransform, apply as applyTransform} from './transform.js';\n\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {import(\"./coordinate.js\").Coordinate} focus\n * @property {number} index\n * @property {Object} layerStates\n * @property {Array} layerStatesArray\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {!Object} skippedFeatureUids\n * @property {TileQueue} tileQueue\n * @property {Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n\n\n/**\n * @typedef {function(PluggableMap, ?FrameState): boolean} PostRenderFunction\n */\n\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixels\n * inside the radius around the given position will be checked for features. This only\n * works for the canvas renderer and not for WebGL.\n */\n\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {boolean} [loadTilesWhileAnimating=false] When set to `true`, tiles\n * will be loaded during animations. This may improve the user experience, but\n * can also make animations stutter on devices with slow memory.\n * @property {boolean} [loadTilesWhileInteracting=false] When set to `true`,\n * tiles will be loaded while interacting with the map. This may improve the\n * user experience, but can also make map panning and zooming choppy on devices\n * with slow memory.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires module:ol/render/Event~RenderEvent#postcompose\n * @fires module:ol/render/Event~RenderEvent#precompose\n * @fires module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\nclass PluggableMap extends BaseObject {\n\n /**\n * @param {MapOptions} options Map options.\n */\n constructor(options) {\n\n super();\n\n const optionsInternal = createOptionsInternal(options);\n\n /**\n * @type {number}\n * @private\n */\n this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n /**\n * @type {boolean}\n * @private\n */\n this.loadTilesWhileAnimating_ =\n options.loadTilesWhileAnimating !== undefined ?\n options.loadTilesWhileAnimating : false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.loadTilesWhileInteracting_ =\n options.loadTilesWhileInteracting !== undefined ?\n options.loadTilesWhileInteracting : false;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = options.pixelRatio !== undefined ?\n options.pixelRatio : DEVICE_PIXEL_RATIO;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.animationDelayKey_;\n\n /**\n * @private\n */\n this.animationDelay_ = function() {\n this.animationDelayKey_ = undefined;\n this.renderFrame_.call(this, Date.now());\n }.bind(this);\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.coordinateToPixelTransform_ = createTransform();\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.pixelToCoordinateTransform_ = createTransform();\n\n /**\n * @private\n * @type {number}\n */\n this.frameIndex_ = 0;\n\n /**\n * @private\n * @type {?FrameState}\n */\n this.frameState_ = null;\n\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n this.previousExtent_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewPropertyListenerKey_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewChangeListenerKey_ = null;\n\n /**\n * @private\n * @type {Array}\n */\n this.layerGroupPropertyListenerKeys_ = null;\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.viewport_ = document.createElement('div');\n this.viewport_.className = 'ol-viewport' + (TOUCH ? ' ol-touch' : '');\n this.viewport_.style.position = 'relative';\n this.viewport_.style.overflow = 'hidden';\n this.viewport_.style.width = '100%';\n this.viewport_.style.height = '100%';\n // prevent page zoom on IE >= 10 browsers\n this.viewport_.style.msTouchAction = 'none';\n this.viewport_.style.touchAction = 'none';\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainer_ = document.createElement('div');\n this.overlayContainer_.className = 'ol-overlaycontainer';\n this.viewport_.appendChild(this.overlayContainer_);\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainerStopEvent_ = document.createElement('div');\n this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n const overlayEvents = [\n EventType.CLICK,\n EventType.DBLCLICK,\n EventType.MOUSEDOWN,\n EventType.TOUCHSTART,\n EventType.MSPOINTERDOWN,\n MapBrowserEventType.POINTERDOWN,\n EventType.MOUSEWHEEL,\n EventType.WHEEL\n ];\n for (let i = 0, ii = overlayEvents.length; i < ii; ++i) {\n listen(this.overlayContainerStopEvent_, overlayEvents[i], stopPropagation);\n }\n this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(this, options.moveTolerance);\n for (const key in MapBrowserEventType) {\n listen(this.mapBrowserEventHandler_, MapBrowserEventType[key],\n this.handleMapBrowserEvent, this);\n }\n\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n /**\n * @private\n * @type {Array}\n */\n this.keyHandlerKeys_ = null;\n\n listen(this.viewport_, EventType.CONTEXTMENU, this.handleBrowserEvent, this);\n listen(this.viewport_, EventType.WHEEL, this.handleBrowserEvent, this);\n listen(this.viewport_, EventType.MOUSEWHEEL, this.handleBrowserEvent, this);\n\n /**\n * @type {Collection}\n * @protected\n */\n this.controls = optionsInternal.controls || new Collection();\n\n /**\n * @type {Collection}\n * @protected\n */\n this.interactions = optionsInternal.interactions || new Collection();\n\n /**\n * @type {Collection}\n * @private\n */\n this.overlays_ = optionsInternal.overlays;\n\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n this.overlayIdIndex_ = {};\n\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n this.renderer_ = this.createRenderer();\n\n /**\n * @type {function(Event)|undefined}\n * @private\n */\n this.handleResize_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate}\n */\n this.focus_ = null;\n\n /**\n * @private\n * @type {!Array}\n */\n this.postRenderFunctions_ = [];\n\n /**\n * @private\n * @type {TileQueue}\n */\n this.tileQueue_ = new TileQueue(\n this.getTilePriority.bind(this),\n this.handleTileChange_.bind(this));\n\n /**\n * Uids of features to skip at rendering time.\n * @type {Object}\n * @private\n */\n this.skippedFeatureUids_ = {};\n\n listen(\n this, getChangeEventType(MapProperty.LAYERGROUP),\n this.handleLayerGroupChanged_, this);\n listen(this, getChangeEventType(MapProperty.VIEW),\n this.handleViewChanged_, this);\n listen(this, getChangeEventType(MapProperty.SIZE),\n this.handleSizeChanged_, this);\n listen(this, getChangeEventType(MapProperty.TARGET),\n this.handleTargetChanged_, this);\n\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n this.setProperties(optionsInternal.values);\n\n this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n (function(control) {\n control.setMap(this);\n }).bind(this));\n\n listen(this.controls, CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(this);\n }, this);\n\n listen(this.controls, CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(null);\n }, this);\n\n this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n (function(interaction) {\n interaction.setMap(this);\n }).bind(this));\n\n listen(this.interactions, CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(this);\n }, this);\n\n listen(this.interactions, CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(null);\n }, this);\n\n this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n\n listen(this.overlays_, CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n this.addOverlayInternal_(/** @type {import(\"./Overlay.js\").default} */ (event.element));\n }, this);\n\n listen(this.overlays_, CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n const overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n const id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }, this);\n\n }\n\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n createRenderer() {\n throw new Error('Use a map type that has a createRenderer method');\n }\n\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n addControl(control) {\n this.getControls().push(control);\n }\n\n /**\n * Add the given interaction to the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n addInteraction(interaction) {\n this.getInteractions().push(interaction);\n }\n\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n addLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n }\n\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n addOverlay(overlay) {\n this.getOverlays().push(overlay);\n }\n\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n addOverlayInternal_(overlay) {\n const id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n }\n\n /**\n *\n * @inheritDoc\n */\n disposeInternal() {\n this.mapBrowserEventHandler_.dispose();\n unlisten(this.viewport_, EventType.CONTEXTMENU, this.handleBrowserEvent, this);\n unlisten(this.viewport_, EventType.WHEEL, this.handleBrowserEvent, this);\n unlisten(this.viewport_, EventType.MOUSEWHEEL, this.handleBrowserEvent, this);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n this.setTarget(null);\n super.disposeInternal();\n }\n\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n forEachFeatureAtPixel(pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n const coordinate = this.getCoordinateFromPixel(pixel);\n opt_options = opt_options !== undefined ? opt_options :\n /** @type {AtPixelOptions} */ ({});\n const hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n const layerFilter = opt_options.layerFilter !== undefined ?\n opt_options.layerFilter : TRUE;\n return this.renderer_.forEachFeatureAtCoordinate(\n coordinate, this.frameState_, hitTolerance, callback, null,\n layerFilter, null);\n }\n\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * `null` if none were found.\n * @api\n */\n getFeaturesAtPixel(pixel, opt_options) {\n let features = null;\n this.forEachFeatureAtPixel(pixel, function(feature) {\n if (!features) {\n features = [];\n }\n features.push(feature);\n }, opt_options);\n return features;\n }\n\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n forEachLayerAtPixel(pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n const options = opt_options || /** @type {AtPixelOptions} */ ({});\n const hitTolerance = options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n const layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(\n pixel, this.frameState_, hitTolerance, callback, null, layerFilter, null);\n }\n\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @template U\n * @api\n */\n hasFeatureAtPixel(pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n const coordinate = this.getCoordinateFromPixel(pixel);\n opt_options = opt_options !== undefined ? opt_options :\n /** @type {AtPixelOptions} */ ({});\n const layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n const hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n return this.renderer_.hasFeatureAtCoordinate(\n coordinate, this.frameState_, hitTolerance, layerFilter, null);\n }\n\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n getEventCoordinate(event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n }\n\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {Event|TouchEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n getEventPixel(event) {\n const viewportPosition = this.viewport_.getBoundingClientRect();\n const eventPosition = 'changedTouches' in event ?\n /** @type {TouchEvent} */ (event).changedTouches[0] :\n /** @type {MouseEvent} */ (event);\n\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top\n ];\n }\n\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n getTarget() {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n }\n\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n getTargetElement() {\n const target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string' ? document.getElementById(target) : target;\n } else {\n return null;\n }\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n getCoordinateFromPixel(pixel) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n } else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n }\n\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n getControls() {\n return this.controls;\n }\n\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n getOverlays() {\n return this.overlays_;\n }\n\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n getOverlayById(id) {\n const overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n }\n\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n getInteractions() {\n return this.interactions;\n }\n\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n getLayerGroup() {\n return (\n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP))\n );\n }\n\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n getLayers() {\n const layers = this.getLayerGroup().getLayers();\n return layers;\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n getPixelFromCoordinate(coordinate) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n } else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n }\n\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n getRenderer() {\n return this.renderer_;\n }\n\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n getSize() {\n return (\n /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE))\n );\n }\n\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n getView() {\n return (\n /** @type {View} */ (this.get(MapProperty.VIEW))\n );\n }\n\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n getViewport() {\n return this.viewport_;\n }\n\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n getOverlayContainer() {\n return this.overlayContainer_;\n }\n\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n getOverlayContainerStopEvent() {\n return this.overlayContainerStopEvent_;\n }\n\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n const frameState = this.frameState_;\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels\n // between the center of the tile and the focus. The factor of 65536 means\n // that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n const deltaX = tileCenter[0] - frameState.focus[0];\n const deltaY = tileCenter[1] - frameState.focus[1];\n return 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;\n }\n\n /**\n * @param {Event} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n handleBrowserEvent(browserEvent, opt_type) {\n const type = opt_type || browserEvent.type;\n const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n }\n\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n handleMapBrowserEvent(mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n this.focus_ = mapBrowserEvent.coordinate;\n mapBrowserEvent.frameState = this.frameState_;\n const interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (let i = interactionsArray.length - 1; i >= 0; i--) {\n const interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n const cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n }\n\n /**\n * @protected\n */\n handlePostRender() {\n\n const frameState = this.frameState_;\n\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n const tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n let maxTotalLoading = this.maxTilesLoading_;\n let maxNewLoads = maxTotalLoading;\n if (frameState) {\n const hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING]) {\n maxTotalLoading = this.loadTilesWhileAnimating_ ? 8 : 0;\n maxNewLoads = 2;\n }\n if (hints[ViewHint.INTERACTING]) {\n maxTotalLoading = this.loadTilesWhileInteracting_ ? 8 : 0;\n maxNewLoads = 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate &&\n !this.tileQueue_.getTilesLoading() && !getLoading(this.getLayers().getArray())) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n\n const postRenderFunctions = this.postRenderFunctions_;\n for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n }\n\n /**\n * @private\n */\n handleSizeChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleTargetChanged_() {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n\n let targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n\n if (this.keyHandlerKeys_) {\n for (let i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n\n if (!targetElement) {\n this.renderer_.removeLayerRenderers();\n removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n } else {\n targetElement.appendChild(this.viewport_);\n\n const keyboardEventTarget = !this.keyboardEventTarget_ ?\n targetElement : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)\n ];\n\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n }\n\n /**\n * @private\n */\n handleTileChange_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewPropertyChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewChanged_() {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n const view = this.getView();\n if (view) {\n this.viewport_.setAttribute('data-view', getUid(view));\n this.viewPropertyListenerKey_ = listen(\n view, ObjectEventType.PROPERTYCHANGE,\n this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(\n view, EventType.CHANGE,\n this.handleViewPropertyChanged_, this);\n }\n this.render();\n }\n\n /**\n * @private\n */\n handleLayerGroupChanged_() {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n const layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(\n layerGroup, ObjectEventType.PROPERTYCHANGE,\n this.render, this),\n listen(\n layerGroup, EventType.CHANGE,\n this.render, this)\n ];\n }\n this.render();\n }\n\n /**\n * @return {boolean} Is rendered.\n */\n isRendered() {\n return !!this.frameState_;\n }\n\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n renderSync() {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n }\n\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n render() {\n if (this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n }\n\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n removeControl(control) {\n return this.getControls().remove(control);\n }\n\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n removeInteraction(interaction) {\n return this.getInteractions().remove(interaction);\n }\n\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n removeLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n }\n\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n removeOverlay(overlay) {\n return this.getOverlays().remove(overlay);\n }\n\n /**\n * @param {number} time Time.\n * @private\n */\n renderFrame_(time) {\n let viewState;\n\n const size = this.getSize();\n const view = this.getView();\n const extent = createEmpty();\n const previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n let frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n const viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n const layerStates = {};\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n layerStates[getUid(layerStatesArray[i].layer)] = layerStatesArray[i];\n }\n viewState = view.getState(this.pixelRatio_);\n frameState = /** @type {FrameState} */ ({\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n extent: extent,\n focus: this.focus_ ? this.focus_ : viewState.center,\n index: this.frameIndex_++,\n layerStates: layerStates,\n layerStatesArray: layerStatesArray,\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n skippedFeatureUids: this.skippedFeatureUids_,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {}\n });\n }\n\n if (frameState) {\n frameState.extent = getForViewAndSize(viewState.center,\n viewState.resolution, viewState.rotation, frameState.size, extent);\n }\n\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n\n if (previousFrameState) {\n const moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n\n const idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n setTimeout(this.handlePostRender.bind(this), 0);\n\n }\n\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n setLayerGroup(layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n }\n\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n setSize(size) {\n this.set(MapProperty.SIZE, size);\n }\n\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n setTarget(target) {\n this.set(MapProperty.TARGET, target);\n }\n\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n setView(view) {\n this.set(MapProperty.VIEW, view);\n }\n\n /**\n * @param {import(\"./Feature.js\").default} feature Feature.\n */\n skipFeature(feature) {\n this.skippedFeatureUids_[getUid(feature)] = true;\n this.render();\n }\n\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n updateSize() {\n const targetElement = this.getTargetElement();\n\n if (!targetElement) {\n this.setSize(undefined);\n } else {\n const computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth'])\n ]);\n }\n }\n\n /**\n * @param {import(\"./Feature.js\").default} feature Feature.\n */\n unskipFeature(feature) {\n delete this.skippedFeatureUids_[getUid(feature)];\n this.render();\n }\n}\n\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n\n /**\n * @type {HTMLElement|Document}\n */\n let keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?\n document.getElementById(options.keyboardEventTarget) :\n options.keyboardEventTarget;\n }\n\n /**\n * @type {Object}\n */\n const values = {};\n\n const layerGroup = options.layers && typeof /** @type {?} */ (options.layers).getLayers === 'function' ?\n /** @type {LayerGroup} */ (options.layers) : new LayerGroup({layers: /** @type {Collection} */ (options.layers)});\n values[MapProperty.LAYERGROUP] = layerGroup;\n\n values[MapProperty.TARGET] = options.target;\n\n values[MapProperty.VIEW] = options.view !== undefined ?\n options.view : new View();\n\n let controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n } else {\n assert(typeof /** @type {?} */ (options.controls).getArray === 'function',\n 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n\n let interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n } else {\n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function',\n 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n\n let overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n } else {\n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function',\n 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n } else {\n overlays = new Collection();\n }\n\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values\n };\n\n}\nexport default PluggableMap;\n\n/**\n * @param {Array} layers Layers.\n * @return {boolean} Layers have sources that are still loading.\n */\nfunction getLoading(layers) {\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n const layer = layers[i];\n if (typeof /** @type {?} */ (layer).getLayers === 'function') {\n return getLoading(/** @type {LayerGroup} */ (layer).getLayers().getArray());\n } else {\n const source = /** @type {import(\"./layer/Layer.js\").default} */ (\n layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n }\n return false;\n}\n","/**\n * @module ol/control/Control\n */\nimport {VOID} from '../functions.js';\nimport MapEventType from '../MapEventType.js';\nimport BaseObject from '../Object.js';\nimport {removeNode} from '../dom.js';\nimport {listen, unlistenByKey} from '../events.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n\n\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nclass Control extends BaseObject {\n\n /**\n * @param {Options} options Control options.\n */\n constructor(options) {\n\n super();\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = options.element ? options.element : null;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.target_ = null;\n\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n this.map_ = null;\n\n /**\n * @protected\n * @type {!Array}\n */\n this.listenerKeys = [];\n\n /**\n * @type {function(import(\"../MapEvent.js\").default)}\n */\n this.render = options.render ? options.render : VOID;\n\n if (options.target) {\n this.setTarget(options.target);\n }\n\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n removeNode(this.element);\n super.disposeInternal();\n }\n\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n setMap(map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (let i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n const target = this.target_ ?\n this.target_ : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map,\n MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n }\n\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n setTarget(target) {\n this.target_ = typeof target === 'string' ?\n document.getElementById(target) :\n target;\n }\n}\n\n\nexport default Control;\n","/**\n * @module ol/css\n */\n\n\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_HIDDEN = 'ol-hidden';\n\n\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_SELECTABLE = 'ol-selectable';\n\n\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSELECTABLE = 'ol-unselectable';\n\n\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\n\n\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_COLLAPSED = 'ol-collapsed';\n\n\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} The CSS font property.\n * @return {Object} The font families (or null if the input spec is invalid).\n */\nexport const getFontFamilies = (function() {\n let style;\n const cache = {};\n return function(font) {\n if (!style) {\n style = document.createElement('div').style;\n }\n if (!(font in cache)) {\n style.font = font;\n const family = style.fontFamily;\n style.font = '';\n if (!family) {\n return null;\n }\n cache[font] = family.split(/,\\s?/);\n }\n return cache[font];\n };\n})();\n","/**\n * @module ol/layer/Layer\n */\nimport {listen, unlistenByKey} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {getUid} from '../util.js';\nimport {getChangeEventType} from '../Object.js';\nimport BaseLayer from './Base.js';\nimport LayerProperty from './Property.js';\nimport {assign} from '../obj.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {import(\"../source/Source.js\").default} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n */\n\n\n/**\n * @typedef {Object} State\n * @property {import(\"./Base.js\").default} layer\n * @property {number} opacity\n * @property {SourceState} sourceState\n * @property {boolean} visible\n * @property {boolean} managed\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {number} zIndex\n * @property {number} maxResolution\n * @property {number} minResolution\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * @fires import(\"../render/Event.js\").RenderEvent\n */\nclass Layer extends BaseLayer {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n\n const baseOptions = assign({}, options);\n delete baseOptions.source;\n\n super(baseOptions);\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.mapPrecomposeKey_ = null;\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.mapRenderKey_ = null;\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.sourceChangeKey_ = null;\n\n if (options.map) {\n this.setMap(options.map);\n }\n\n listen(this,\n getChangeEventType(LayerProperty.SOURCE),\n this.handleSourcePropertyChange_, this);\n\n const source = options.source ? options.source : null;\n this.setSource(source);\n }\n\n /**\n * @inheritDoc\n */\n getLayersArray(opt_array) {\n const array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n }\n\n /**\n * @inheritDoc\n */\n getLayerStatesArray(opt_states) {\n const states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n }\n\n /**\n * Get the layer source.\n * @return {import(\"../source/Source.js\").default} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n getSource() {\n const source = this.get(LayerProperty.SOURCE);\n return (\n /** @type {import(\"../source/Source.js\").default} */ (source) || null\n );\n }\n\n /**\n * @inheritDoc\n */\n getSourceState() {\n const source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n }\n\n /**\n * @private\n */\n handleSourceChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleSourcePropertyChange_() {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n const source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source,\n EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n }\n\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n setMap(map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function(evt) {\n const renderEvent = /** @type {import(\"../render/Event.js\").default} */ (evt);\n const layerState = this.getLayerState();\n layerState.managed = false;\n if (this.getZIndex() === undefined) {\n layerState.zIndex = Infinity;\n }\n renderEvent.frameState.layerStatesArray.push(layerState);\n renderEvent.frameState.layerStates[getUid(this)] = layerState;\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n }\n\n /**\n * Set the layer source.\n * @param {import(\"../source/Source.js\").default} source The layer source.\n * @observable\n * @api\n */\n setSource(source) {\n this.set(LayerProperty.SOURCE, source);\n }\n}\n\n\n/**\n * Return `true` if the layer is visible, and if the passed resolution is\n * between the layer's minResolution and maxResolution. The comparison is\n * inclusive for `minResolution` and exclusive for `maxResolution`.\n * @param {State} layerState Layer state.\n * @param {number} resolution Resolution.\n * @return {boolean} The layer is visible at the given resolution.\n */\nexport function visibleAtResolution(layerState, resolution) {\n return layerState.visible && resolution >= layerState.minResolution &&\n resolution < layerState.maxResolution;\n}\n\n\nexport default Layer;\n","/**\n * @module ol/control/Attribution\n */\nimport {equals} from '../array.js';\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED} from '../css.js';\nimport {removeChildren, replaceNode} from '../dom.js';\nimport {listen} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {visibleAtResolution} from '../layer/Layer.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n\n\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nclass Attribution extends Control {\n\n /**\n * @param {Options=} opt_options Attribution options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n });\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.ulElement_ = document.createElement('ul');\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.overrideCollapsible_ = options.collapsible !== undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n const className = options.className !== undefined ? options.className : 'ol-attribution';\n\n const tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n const collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : 'i';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n }\n\n\n const activeLabel = (this.collapsible_ && !this.collapsed_) ?\n this.collapseLabel_ : this.label_;\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n\n listen(button, EventType.CLICK, this.handleClick_, this);\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.ulElement_);\n element.appendChild(button);\n\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n this.renderedAttributions_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n\n }\n\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n collectSourceAttributions_(frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n const lookup = {};\n\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n const visibleAttributions = [];\n\n const layerStatesArray = frameState.layerStatesArray;\n const resolution = frameState.viewState.resolution;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n if (!visibleAtResolution(layerState, resolution)) {\n continue;\n }\n\n const source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n\n const attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n\n const attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n\n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n\n if (Array.isArray(attributions)) {\n for (let j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n } else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n }\n\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n updateElement_(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const attributions = this.collectSourceAttributions_(frameState);\n\n const visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n\n removeChildren(this.ulElement_);\n\n // append the attributions\n for (let i = 0, ii = attributions.length; i < ii; ++i) {\n const element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n\n this.renderedAttributions_ = attributions;\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n }\n\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n}\n\n\n/**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Attribution}\n * @api\n */\nexport function render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n}\n\n\nexport default Attribution;\n","/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport {listen} from '../events.js';\nimport EventType from '../events/EventType.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function()} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nclass Rotate extends Control {\n\n /**\n * @param {Options=} opt_options Rotate options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n });\n\n const className = options.className !== undefined ? options.className : 'ol-rotate';\n\n const label = options.label !== undefined ? options.label : '\\u21E7';\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.label_ = null;\n\n if (typeof label === 'string') {\n this.label_ = document.createElement('span');\n this.label_.className = 'ol-compass';\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n this.label_.classList.add('ol-compass');\n }\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n\n const button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(this.label_);\n\n listen(button, EventType.CLICK, this.handleClick_, this);\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n\n this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @type {boolean}\n * @private\n */\n this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.rotation_ = undefined;\n\n if (this.autoHide_) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n } else {\n this.resetNorth_();\n }\n }\n\n /**\n * @private\n */\n resetNorth_() {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n if (view.getRotation() !== undefined) {\n if (this.duration_ > 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut\n });\n } else {\n view.setRotation(0);\n }\n }\n }\n}\n\n\n/**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Rotate}\n * @api\n */\nexport function render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n const rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n const transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n const contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n } else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.msTransform = transform;\n this.label_.style.webkitTransform = transform;\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport {listen} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nclass Zoom extends Control {\n\n /**\n * @param {Options=} opt_options Zoom options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target\n });\n\n const className = options.className !== undefined ? options.className : 'ol-zoom';\n\n const delta = options.delta !== undefined ? options.delta : 1;\n\n const zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n const zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n\n const zoomInTipLabel = options.zoomInTipLabel !== undefined ?\n options.zoomInTipLabel : 'Zoom in';\n const zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?\n options.zoomOutTipLabel : 'Zoom out';\n\n const inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(\n typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel\n );\n\n listen(inElement, EventType.CLICK, this.handleClick_.bind(this, delta));\n\n const outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(\n typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel\n );\n\n listen(outElement, EventType.CLICK, this.handleClick_.bind(this, -delta));\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n zoomByDelta_(delta) {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const currentResolution = view.getResolution();\n if (currentResolution) {\n const newResolution = view.constrainResolution(currentResolution, delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n duration: this.duration_,\n easing: easeOut\n });\n } else {\n view.setResolution(newResolution);\n }\n }\n }\n}\n\n\nexport default Zoom;\n","/**\n * @module ol/control/util\n */\nimport Collection from '../Collection.js';\nimport Attribution from './Attribution.js';\nimport Rotate from './Rotate.js';\nimport Zoom from './Zoom.js';\n\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\n */\n\n\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions=} opt_options\n * Defaults options.\n * @return {Collection}\n * Controls.\n * @function module:ol/control.defaults\n * @api\n */\nexport function defaults(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n const controls = new Collection();\n\n const zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n\n const rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n\n const attributionControl = options.attribution !== undefined ?\n options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n\n return controls;\n}\n","/**\n * @module ol/Kinetic\n */\n\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nclass Kinetic {\n\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n constructor(decay, minVelocity, delay) {\n\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n begin() {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n update(x, y) {\n this.points_.push(x, y, Date.now());\n }\n\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n end() {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n const delay = Date.now() - this.delay_;\n const lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n\n // get the first point which still falls into the delay time\n let firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n\n const duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n\n const dx = this.points_[lastIndex] - this.points_[firstIndex];\n const dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n }\n\n /**\n * @return {number} Total distance travelled (pixels).\n */\n getDistance() {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n }\n\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n getAngle() {\n return this.angle_;\n }\n}\n\nexport default Kinetic;\n","/**\n * @module ol/interaction/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active'\n};\n","/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport {easeOut, linear} from '../easing.js';\nimport InteractionProperty from './Property.js';\nimport {clamp} from '../math.js';\n\n\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return).\n */\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nclass Interaction extends BaseObject {\n /**\n * @param {InteractionOptions} options Options.\n */\n constructor(options) {\n super();\n\n if (options.handleEvent) {\n this.handleEvent = options.handleEvent;\n }\n\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n this.map_ = null;\n\n this.setActive(true);\n }\n\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n getActive() {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n }\n\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n return true;\n }\n\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n setActive(active) {\n this.set(InteractionProperty.ACTIVE, active);\n }\n\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n setMap(map) {\n this.map_ = map;\n }\n}\n\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number=} opt_duration Duration.\n */\nexport function pan(view, delta, opt_duration) {\n const currentCenter = view.getCenter();\n if (currentCenter) {\n const center = view.constrainCenter(\n [currentCenter[0] + delta[0], currentCenter[1] + delta[1]]);\n if (opt_duration) {\n view.animate({\n duration: opt_duration,\n easing: linear,\n center: center\n });\n } else {\n view.setCenter(center);\n }\n }\n}\n\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number|undefined} rotation Rotation.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate.\n * @param {number=} opt_duration Duration.\n */\nexport function rotate(view, rotation, opt_anchor, opt_duration) {\n rotation = view.constrainRotation(rotation, 0);\n rotateWithoutConstraints(view, rotation, opt_anchor, opt_duration);\n}\n\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number|undefined} rotation Rotation.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate.\n * @param {number=} opt_duration Duration.\n */\nexport function rotateWithoutConstraints(view, rotation, opt_anchor, opt_duration) {\n if (rotation !== undefined) {\n const currentRotation = view.getRotation();\n const currentCenter = view.getCenter();\n if (currentRotation !== undefined && currentCenter && opt_duration > 0) {\n view.animate({\n rotation: rotation,\n anchor: opt_anchor,\n duration: opt_duration,\n easing: easeOut\n });\n } else {\n view.rotate(rotation, opt_anchor);\n }\n }\n}\n\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number|undefined} resolution Resolution to go to.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate.\n * @param {number=} opt_duration Duration.\n * @param {number=} opt_direction Zooming direction; > 0 indicates\n * zooming out, in which case the constraints system will select\n * the largest nearest resolution; < 0 indicates zooming in, in\n * which case the constraints system will select the smallest\n * nearest resolution; == 0 indicates that the zooming direction\n * is unknown/not relevant, in which case the constraints system\n * will select the nearest resolution. If not defined 0 is\n * assumed.\n */\nexport function zoom(view, resolution, opt_anchor, opt_duration, opt_direction) {\n resolution = view.constrainResolution(resolution, 0, opt_direction);\n zoomWithoutConstraints(view, resolution, opt_anchor, opt_duration);\n}\n\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n const currentResolution = view.getResolution();\n let resolution = view.constrainResolution(currentResolution, delta, 0);\n\n if (resolution !== undefined) {\n const resolutions = view.getResolutions();\n resolution = clamp(\n resolution,\n view.getMinResolution() || resolutions[resolutions.length - 1],\n view.getMaxResolution() || resolutions[0]);\n }\n\n // If we have a constraint on center, we need to change the anchor so that the\n // new center is within the extent. We first calculate the new center, apply\n // the constraint to it, and then calculate back the anchor\n if (opt_anchor && resolution !== undefined && resolution !== currentResolution) {\n const currentCenter = view.getCenter();\n let center = view.calculateCenterZoom(resolution, opt_anchor);\n center = view.constrainCenter(center);\n\n opt_anchor = [\n (resolution * currentCenter[0] - currentResolution * center[0]) /\n (resolution - currentResolution),\n (resolution * currentCenter[1] - currentResolution * center[1]) /\n (resolution - currentResolution)\n ];\n }\n\n zoomWithoutConstraints(view, resolution, opt_anchor, opt_duration);\n}\n\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number|undefined} resolution Resolution to go to.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomWithoutConstraints(view, resolution, opt_anchor, opt_duration) {\n if (resolution) {\n const currentResolution = view.getResolution();\n const currentCenter = view.getCenter();\n if (currentResolution !== undefined && currentCenter &&\n resolution !== currentResolution && opt_duration) {\n view.animate({\n resolution: resolution,\n anchor: opt_anchor,\n duration: opt_duration,\n easing: easeOut\n });\n } else {\n if (opt_anchor) {\n const center = view.calculateCenterZoom(resolution, opt_anchor);\n view.setCenter(center);\n }\n view.setResolution(resolution);\n }\n }\n}\n\nexport default Interaction;\n","/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n\n\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nclass DoubleClickZoom extends Interaction {\n\n /**\n * @param {Options=} opt_options Options.\n */\n constructor(opt_options) {\n super({\n handleEvent: handleEvent\n });\n\n const options = opt_options ? opt_options : {};\n\n /**\n * @private\n * @type {number}\n */\n this.delta_ = options.delta ? options.delta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n }\n\n}\n\n\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {DoubleClickZoom}\n */\nfunction handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n const browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n const map = mapBrowserEvent.map;\n const anchor = mapBrowserEvent.coordinate;\n const delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n const view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n}\n\nexport default DoubleClickZoom;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {assert} from '../asserts.js';\nimport {TRUE, FALSE} from '../functions.js';\nimport {WEBKIT, MAC} from '../has.js';\n\n\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function(event) {\n return event.target.getTargetElement() === document.activeElement;\n};\n\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function(mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function(mapBrowserEvent) {\n const originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 &&\n !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function(mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function(mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function(mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey;\n};\n\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `