{"version":3,"sources":["webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/ol/interaction/DragZoom.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/cloneDeep.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/ol/interaction/KeyboardZoom.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/ol/render.js","webpack:///./node_modules/ol/renderer/Map.js","webpack:///./node_modules/ol/renderer/Composite.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_getAllKeysIn.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./src/components/MapLayerAttributes.vue?ef71","webpack:///src/components/MapLayerAttributes.vue","webpack:///./src/components/MapLayerAttributes.vue?9b58","webpack:///./src/components/MapLayerAttributes.vue","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/ol/control/Attribution.js","webpack:///./node_modules/ol/control/Rotate.js","webpack:///./node_modules/ol/control/Zoom.js","webpack:///./node_modules/ol/control.js","webpack:///./src/components/atlas/page-templates/MyCard.vue?a501","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/ol/render/Box.js","webpack:///./node_modules/ol/interaction/DragBox.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/ol/control/Control.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/ol/ViewProperty.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./src/components/atlas/map/MapTooltip.vue?8fa4","webpack:///./src/components/MapLayerAttributes.vue?5006","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./src/components/atlas/map/MyMap.vue?dcc9","webpack:///./node_modules/ol/Kinetic.js","webpack:///./node_modules/ol/interaction/DragPan.js","webpack:///./node_modules/ol/interaction/DragRotate.js","webpack:///./node_modules/ol/events/KeyCode.js","webpack:///./node_modules/ol/interaction/KeyboardPan.js","webpack:///./node_modules/ol/interaction/PinchRotate.js","webpack:///./node_modules/ol/interaction.js","webpack:///./node_modules/ol/Map.js","webpack:///./node_modules/proj4/lib/global.js","webpack:///./node_modules/proj4/lib/constants/values.js","webpack:///./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack:///./node_modules/proj4/lib/constants/units.js","webpack:///./node_modules/proj4/lib/match.js","webpack:///./node_modules/proj4/lib/projString.js","webpack:///./node_modules/wkt-parser/parser.js","webpack:///./node_modules/wkt-parser/process.js","webpack:///./node_modules/wkt-parser/index.js","webpack:///./node_modules/proj4/lib/defs.js","webpack:///./node_modules/proj4/lib/parseCode.js","webpack:///./node_modules/proj4/lib/extend.js","webpack:///./node_modules/proj4/lib/common/msfnz.js","webpack:///./node_modules/proj4/lib/common/sign.js","webpack:///./node_modules/proj4/lib/common/adjust_lon.js","webpack:///./node_modules/proj4/lib/common/tsfnz.js","webpack:///./node_modules/proj4/lib/common/phi2z.js","webpack:///./node_modules/proj4/lib/projections/merc.js","webpack:///./node_modules/proj4/lib/projections/longlat.js","webpack:///./node_modules/proj4/lib/projections.js","webpack:///./node_modules/proj4/lib/constants/Ellipsoid.js","webpack:///./node_modules/proj4/lib/deriveConstants.js","webpack:///./node_modules/proj4/lib/constants/Datum.js","webpack:///./node_modules/proj4/lib/datum.js","webpack:///./node_modules/proj4/lib/Proj.js","webpack:///./node_modules/proj4/lib/datumUtils.js","webpack:///./node_modules/proj4/lib/datum_transform.js","webpack:///./node_modules/proj4/lib/adjust_axis.js","webpack:///./node_modules/proj4/lib/common/toPoint.js","webpack:///./node_modules/proj4/lib/checkSanity.js","webpack:///./node_modules/proj4/lib/transform.js","webpack:///./node_modules/proj4/lib/core.js","webpack:///./node_modules/mgrs/mgrs.js","webpack:///./node_modules/proj4/lib/Point.js","webpack:///./node_modules/proj4/lib/common/pj_enfn.js","webpack:///./node_modules/proj4/lib/common/pj_mlfn.js","webpack:///./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack:///./node_modules/proj4/lib/projections/tmerc.js","webpack:///./node_modules/proj4/lib/common/sinh.js","webpack:///./node_modules/proj4/lib/common/hypot.js","webpack:///./node_modules/proj4/lib/common/log1py.js","webpack:///./node_modules/proj4/lib/common/asinhy.js","webpack:///./node_modules/proj4/lib/common/gatg.js","webpack:///./node_modules/proj4/lib/common/clens.js","webpack:///./node_modules/proj4/lib/common/cosh.js","webpack:///./node_modules/proj4/lib/common/clens_cmplx.js","webpack:///./node_modules/proj4/lib/projections/etmerc.js","webpack:///./node_modules/proj4/lib/common/adjust_zone.js","webpack:///./node_modules/proj4/lib/projections/utm.js","webpack:///./node_modules/proj4/lib/common/srat.js","webpack:///./node_modules/proj4/lib/projections/gauss.js","webpack:///./node_modules/proj4/lib/projections/sterea.js","webpack:///./node_modules/proj4/lib/projections/stere.js","webpack:///./node_modules/proj4/lib/projections/somerc.js","webpack:///./node_modules/proj4/lib/projections/omerc.js","webpack:///./node_modules/proj4/lib/projections/lcc.js","webpack:///./node_modules/proj4/lib/projections/krovak.js","webpack:///./node_modules/proj4/lib/common/mlfn.js","webpack:///./node_modules/proj4/lib/common/e0fn.js","webpack:///./node_modules/proj4/lib/common/e1fn.js","webpack:///./node_modules/proj4/lib/common/e2fn.js","webpack:///./node_modules/proj4/lib/common/e3fn.js","webpack:///./node_modules/proj4/lib/common/gN.js","webpack:///./node_modules/proj4/lib/common/adjust_lat.js","webpack:///./node_modules/proj4/lib/common/imlfn.js","webpack:///./node_modules/proj4/lib/projections/cass.js","webpack:///./node_modules/proj4/lib/common/qsfnz.js","webpack:///./node_modules/proj4/lib/projections/laea.js","webpack:///./node_modules/proj4/lib/common/asinz.js","webpack:///./node_modules/proj4/lib/projections/aea.js","webpack:///./node_modules/proj4/lib/projections/gnom.js","webpack:///./node_modules/proj4/lib/common/iqsfnz.js","webpack:///./node_modules/proj4/lib/projections/cea.js","webpack:///./node_modules/proj4/lib/projections/eqc.js","webpack:///./node_modules/proj4/lib/projections/poly.js","webpack:///./node_modules/proj4/lib/projections/nzmg.js","webpack:///./node_modules/proj4/lib/projections/mill.js","webpack:///./node_modules/proj4/lib/projections/sinu.js","webpack:///./node_modules/proj4/lib/projections/moll.js","webpack:///./node_modules/proj4/lib/projections/eqdc.js","webpack:///./node_modules/proj4/lib/projections/vandg.js","webpack:///./node_modules/proj4/lib/projections/aeqd.js","webpack:///./node_modules/proj4/lib/projections/ortho.js","webpack:///./node_modules/proj4/lib/projections/qsc.js","webpack:///./node_modules/proj4/lib/projections/robin.js","webpack:///./node_modules/proj4/lib/projections/geocent.js","webpack:///./node_modules/proj4/projs.js","webpack:///./node_modules/proj4/lib/index.js","webpack:///./node_modules/ol/proj/proj4.js","webpack:///./src/components/atlas/map/MapTooltip.vue?33ef","webpack:///src/components/atlas/map/MapTooltip.vue","webpack:///./src/components/atlas/map/MapTooltip.vue?ebf9","webpack:///./src/components/atlas/map/MapTooltip.vue","webpack:///./src/components/atlas/map/MapPopup.vue?c576","webpack:///src/components/atlas/map/MapPopup.vue","webpack:///./src/components/atlas/map/MapPopup.vue?e4c8","webpack:///./src/components/atlas/map/MapPopup.vue","webpack:///src/components/atlas/map/MyMap.vue","webpack:///./src/components/atlas/map/MyMap.vue?9f23","webpack:///./src/components/atlas/map/MyMap.vue","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/ol/MapEventType.js","webpack:///./src/components/atlas/map/MapPopup.vue?7ab3","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./src/assets/identify-marker.png","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./src/components/atlas/map/MyMap.vue?80ec","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/ol/rotationconstraint.js","webpack:///./src/components/atlas/page-templates/MultipleCards.vue?d093","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/ol/interaction/MouseWheelZoom.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_getSymbolsIn.js","webpack:///./node_modules/ol/centerconstraint.js","webpack:///./node_modules/ol/resolutionconstraint.js","webpack:///./node_modules/ol/View.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/elm-pep/dist/elm-pep.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/ol/interaction/DoubleClickZoom.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./src/components/atlas/page-templates/MultipleCards.vue?c63d","webpack:///./src/components/atlas/page-templates/MyCard.vue?472e","webpack:///src/components/atlas/page-templates/MyCard.vue","webpack:///./src/components/atlas/page-templates/MyCard.vue?0129","webpack:///./src/components/atlas/page-templates/MyCard.vue","webpack:///src/components/atlas/page-templates/MultipleCards.vue","webpack:///./src/components/atlas/page-templates/MultipleCards.vue?f15d","webpack:///./src/components/atlas/page-templates/MultipleCards.vue","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/ol/MapProperty.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/ol/interaction/PinchZoom.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/ol/pointer/EventType.js","webpack:///./node_modules/ol/MapBrowserEventHandler.js","webpack:///./node_modules/ol/structs/PriorityQueue.js","webpack:///./node_modules/ol/TileQueue.js","webpack:///./node_modules/ol/layer/Group.js","webpack:///./node_modules/ol/PluggableMap.js"],"names":["Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","__","this","constructor","create","DragZoom","_super","opt_options","_this","options","condition","className","minArea","onBoxEnd","duration_","duration","out_","out","map","getMap","view","getView","size","getSize","extent","getGeometry","getExtent","mapExtent","calculateExtentInternal","boxPixelExtent","getPixelFromCoordinateInternal","factor","getResolutionForExtentInternal","resolution","getConstrainedResolution","center","getConstrainedCenter","animateInternal","easing","isPrototype","nativeKeys","baseKeys","object","key","push","baseClone","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","cloneDeep","stubFalse","arrayPush","array","values","index","length","offset","baseIsNative","getValue","getNative","KeyboardZoom","handleEvent","condition_","delta_","delta","mapBrowserEvent","stopEvent","type","KEYDOWN","KEYPRESS","keyEvent","charCode","charCodeAt","preventDefault","freeExports","nodeType","freeModule","moduleExports","Buffer","root","nativeIsBuffer","isBuffer","copyObject","keysIn","baseAssignIn","source","breakpoints","ALIGNMENT","makeProps","props","prefix","def","alignValidator","str","alignProps","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","justify","alignContent","classMap","breakpointClass","val","breakpoint","prop","cache","name","functional","dense","noGutters","render","children","cacheKey","String","classList","h","data","staticClass","class","getSymbolsIn","copySymbolsIn","isKeyable","isObjectLike","coreJsData","maskSrcKey","uid","exec","keys","IE_PROTO","isMasked","func","renderDeclutterItems","frameState","declutterTree","clear","items","declutterItems","z","item","zIndexItems","i","ii","renderDeclutter","opacity","MapRenderer","map_","declutterTree_","dispatchRenderEvent","calculateMatrices2D","viewState","coordinateToPixelTransform","pixelToCoordinateTransform","rotation","forEachFeatureAtCoordinate","coordinate","hitTolerance","checkWrapped","callback","thisArg","layerFilter","thisArg2","managed","feature","layer","projection","translatedCoordinate","slice","offsets","canWrapX","projectionExtent","worldWidth","declutteredFeatures","layerStates","layerStatesArray","numLayers","all","entry","tmpCoord","j","layerState","hasRenderer","layerRenderer","getRenderer","getSource","coordinates","getWrapX","callback_1","bind","forEachLayerAtPixel","pixel","hasFeatureAtCoordinate","hasFeature","renderFrame","scheduleExpireIconCache","canExpireCache","postRenderFunctions","expireIconCache","Disposable","expire","Map","CompositeMapRenderer","fontChangeListenerKey_","ObjectEventType","PROPERTYCHANGE","redrawText","element_","document","createElement","style","position","width","height","zIndex","container","getViewport","insertBefore","firstChild","children_","renderedVisible_","hasListener","event_1","dispatchEvent","disposeInternal","parentNode","removeChild","PRECOMPOSE","sort","a","previousElement","layerIndex","sourceState","READY","UNDEFINED","element","POSTCOMPOSE","display","getDataAtPixel","getTag","mapTag","baseIsMap","isObject","baseGetAllKeys","getAllKeysIn","Promise","_vm","_h","$createElement","_c","_self","_l","attr","n","_v","_s","domProps","staticRenderFns","component","hashDelete","has","__data__","getMapData","mapCacheSet","set","Attribution","target","ulElement_","collapsed_","collapsed","overrideCollapsible_","collapsible","collapsible_","tipLabel","collapseLabel","collapseLabel_","textContent","label","label_","activeLabel","button","setAttribute","title","appendChild","addEventListener","EventType","CLICK","handleClick_","cssClasses","renderedAttributions_","collectSourceAttributions_","lookup","visibleAttributions","attributionGetter","getAttributions","attributions","getAttributionsCollapsible","setCollapsible","isArray","jj","updateElement_","visible","innerHTML","event","handleToggle_","toggle","getCollapsible","setCollapsed","getCollapsed","Control","mapEvent","Rotate","add","callResetNorth_","resetNorth","autoHide_","autoHide","rotation_","resetNorth_","getRotation","Math","PI","animate","setRotation","transform","contains","remove","Zoom","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","createTextNode","outElement","zoomByDelta_","currentZoom","getZoom","newZoom","getConstrainedZoom","getAnimating","cancelAnimations","zoom","setZoom","defaults","controls","Collection","zoomControl","zoomOptions","rotateControl","rotate","rotateOptions","attributionControl","attribution","attributionOptions","Uint8Array","mapCacheGet","get","nativeCreate","HASH_UNDEFINED","hashSet","baseGetTag","argsTag","baseIsArguments","RenderBox","geometry_","startPixel_","endPixel_","setMap","render_","startPixel","endPixel","px","left","min","top","abs","getOverlayContainer","setPixels","createOrUpdateGeometry","pixels","getCoordinateFromPixelInternal","setCoordinates","Polygon","DragBoxEventType","BOXSTART","BOXDRAG","BOXEND","DragBoxEvent","Event","DragBox","box_","minArea_","onBoxEnd_","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","handleDragEvent","handleUpEvent","handleDownEvent","Pointer","listCacheClear","objectToString","freeGlobal","freeSelf","self","Function","arrayFilter","predicate","resIndex","overArg","getPrototype","getPrototypeOf","stackDelete","isFunction","isLength","isArrayLike","baseAssignValue","eq","assignValue","objValue","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","toSource","reRegExpChar","reIsHostCtor","funcProto","funcToString","reIsNative","RegExp","replace","pattern","test","nullTag","undefinedTag","Stack","arrayEach","baseAssign","cloneBuffer","copyArray","copySymbols","getAllKeys","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","CLONE_FLAT_FLAG","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","cloneableTags","bitmask","customizer","stack","isDeep","isFlat","isFull","isArr","isFunc","stacked","forEach","subValue","keysFunc","target_","listenerKeys","setTarget","getOverlayContainerStopEvent","POSTRENDER","getElementById","WeakMap","defineProperty","nativeKeysIn","baseKeysIn","isProto","DataView","Set","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","Ctor","ctorString","CENTER","RESOLUTION","ROTATION","hashClear","collection","collectionStrong","init","arguments","baseTimes","iteratee","ref","attrs","_e","Kinetic","decay","minVelocity","delay","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","begin","update","x","y","Date","now","end","lastIndex","firstIndex","dx","dy","atan2","sqrt","getDistance","getAngle","DragPan","stopDown","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","defaultCondition","noKinetic_","conditionInternal_","pass","getTargetElement","hasAttribute","beginInteraction","targetPointers","centroid","getResolution","adjustCenterInternal","originalEvent","distance","angle","getCenterInternal","centerpx","dest","cos","sin","endInteraction","DragRotate","lastAngle_","getConstraints","theta","adjustRotationInternal","LEFT","UP","RIGHT","DOWN","KeyboardPan","defaultCondition_","pixelDelta_","pixelDelta","Interaction","keyCode","KeyCode","mapUnitsDelta","deltaX","deltaY","PinchRotate","pointerOptions","anchor_","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","clientY","clientX","viewportPosition","getBoundingClientRect","handlingDownUpSequence","interactions","altShiftDragRotate","doubleClickZoom","DoubleClickZoom","zoomDelta","zoomDuration","dragPan","onFocusOnly","pinchRotate","pinchZoom","PinchZoom","keyboard","mouseWheelZoom","MouseWheelZoom","shiftDragZoom","createRenderer","Composite","PluggableMap","defs","WGS84","GOOGLE","PJD_3PARAM","PJD_7PARAM","PJD_WGS84","PJD_NODATUM","SEC_TO_RAD","HALF_PI","SIXTH","RA4","RA6","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","ft","to_meter","ignoredChar","match","obj","testkey","processedKey","lkey","toLowerCase","paramName","paramVal","paramOutname","paramObj","defData","split","v","trim","filter","reduce","params","proj","datum","rf","parseFloat","lat_0","lat0","lat_1","lat1","lat_2","lat2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","alpha","lonc","longc","x_0","x0","y_0","y0","k_0","k0","k","r_a","R_A","zone","parseInt","south","utmSouth","towgs84","datum_params","units","unit","from_greenwich","pm","nadgrids","datumCode","axis","legalAxis","indexOf","substr","NEUTRAL","KEYWORD","NUMBER","QUOTED","AFTERQUOTE","ENDED","whitespace","latin","keyword","endThings","digets","Parser","text","Error","level","place","currentObject","state","parseString","txt","parser","output","mapit","unshift","thing","newObj","sExpr","shift","convert","readCharicter","char","neutral","quoted","afterquote","number","word","afterItem","pop","newObjects","rename","outName","inName","d2r","input","cleanWKT","wkt","projName","local","PROJECTION","AXIS","axisOrder","descriptor","UNIT","DATUM","SPHEROID","geogcs","GEOGCS","toMeter","ratio","sphere","ellps","TOWGS84","isFinite","renamer","list","lisp","that","charAt","apply","EPSG","ESRI","IAU2000","console","log","global","testObj","code","testDef","codeWords","testWKT","some","codes","checkMercator","auth","checkProjStr","ext","testProj","parse","maybeProjStr","property","destination","con","eccent","sinphi","cosphi","sign","com","pow","tan","phi","dphi","eccnth","atan","ts","es","msfnz","forward","lon","lat","adjust_lon","tsfnz","inverse","exp","phi2z","names","identity","pt","projs","merc","longlat","projStore","len","start","ellipseName","eccentricity","a2","b2","ep2","ellipse","datum_type","wgs84","datumName","ch1903","ggrs87","nad83","nad27","potsdam","carthage","hermannskogel","osni52","ire65","rassadiran","nzgd49","osgb36","s_jtsk","beduaram","gunung_segara","rnb72","Projection","srsCode","error","json","parseCode","ourProj","projections","datumDef","sphere_","ecc","datumObj","extend","Proj","compareDatums","geodeticToGeocentric","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","Longitude","Latitude","Height","Infinity","geocentricToGeodetic","P","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","iter","genau","genau2","maxiter","X","Y","Z","geocentricToWgs84","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricFromWgs84","x_tmp","y_tmp","z_tmp","checkParams","point","t","xin","yin","zin","denorm","crs","m","checkCoord","num","Number","TypeError","checkNotWGS","toPoint","checkSanity","adjust_axis","datum_transform","transformer","from","to","coords","transformedArray","NaN","concat","splice","checkProj","oProj","fromProj","toProj","coord","single","NUM_100K_SETS","SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","I","O","ll","accuracy","encode","LLtoUTM","mgrs","bbox","UTMtoLL","decode","toUpperCase","bottom","right","degToRad","deg","radToDeg","rad","LongOrigin","eccPrimeSquared","N","T","C","A","M","LongOriginRad","ZoneNumber","Lat","Long","eccSquared","LatRad","LongRad","floor","UTMEasting","UTMNorthing","northing","round","easting","zoneNumber","zoneLetter","getLetterDesignator","utm","N1","T1","C1","R1","D","mu","phi1Rad","e1","topRight","LetterDesignator","seasting","snorthing","get100kID","setParm","get100kSetForZone","setColumn","setRow","getLetter100kID","column","row","parm","colOrigin","rowOrigin","colInt","rowInt","rollover","twoLetter","fromCharCode","mgrsString","testChar","hunK","sb","substring","east100k","getEastingFromChar","north100k","getNorthingFromChar","getMinNorthing","remainder","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","curCol","eastingValue","rewindMarker","curRow","northingValue","Point","warn","fromMGRS","mgrsStr","toMGRS","C00","C02","C04","C06","C08","C22","C44","C46","C48","C66","C68","C88","en","cphi","sphi","MAX_ITER","arg","s","pj_mlfn","pj_enfn","ml0","delta_lon","sin_phi","cos_phi","al","als","c","cs","tq","ml","acos","pj_inv_mlfn","tan_phi","ds","f","g","temp","asin","r","max","log1py","hypot","cos_2B","B","pp","h1","h2","hr","arg_r","hr1","hr2","hi2","sin_arg_r","cos_arg_r","sinh_arg_i","sinh","arg_i","cosh_arg_i","cosh","hi1","hi","cgb","cbg","utg","gtu","np","Qn","gatg","Zb","clens","Ce","Cn","sin_Cn","cos_Cn","sin_Ce","cos_Ce","asinhy","tmp","clens_cmplx","dependsOn","adjust_zone","etmerc","esinp","rc","phic0","ratexp","K","srat","DEL_TOL","gauss","sinc0","cosc0","R2","sinc","cosc","cosl","rho","ssfn_","phit","eccen","coslat0","sinlat0","isNaN","cons","ms1","X0","cosX0","sinX0","sinX","cosX","rh","sinlat","coslat","dlon","ce","Chi","phy0","lambda0","sinPhy0","semiMajorAxis","invF","flattening","e2","R","b0","k1","k2","k3","Sa1","Sa2","S","rotI","rotB","lambda","phy","prevPhy","iteration","no_off","no_rot","bl","fl","gl","t0","dl","t1","t2","el","hl","jl","pl","dlon12","dlon10","gamma0","uc","us","vs","ql","sl","tl","vl","ul","POSITIVE_INFINITY","qp","sp","tp","vp","up","sin1","cos1","ts1","sin2","cos2","ms2","ts2","ts0","ns","f0","rh1","s45","s90","fi0","alfa","uq","u0","n0","s0","ro0","ad","gfi","u","deltav","eps","ro","czech","fi1","ok","e0","e3","e0fn","e1fn","e2fn","e3fn","mlfn","lam","nl","gN","asq","cl","dd","ml1","phi1","imlfn","nl1","rl1","tl1","dsq","adjust_lat","S_POLE","N_POLE","EQUIT","OBLIQ","mode","qsfnz","mmf","apa","authset","rq","xmf","ymf","sinb1","cosb1","sinph0","cosph0","coslam","sinlam","q","sinb","cosb","cCe","sCe","ab","cosz","sinz","authlat","P00","P01","P02","P10","P11","P20","APA","beta","sin_po","cos_po","qs1","qs2","t3","qs0","ns0","qs","phi1z","asinz","eccnts","sin_p14","cos_p14","infinity_dist","coslon","ksp","iqsfnz","dlat","tanphi","mln","mlnp","ma","B_re","B_im","C_re","C_im","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_n_re1","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_re1","z_n_im1","delta_x","delta_y","z_n_re","z_n_im","iterations","num_re","num_im","den_re","den_im","den2","d_psi_n","C_y","C_x","V","delta_theta","ml2","sinth","costh","gsq","msq","xx","yy","xys","c1","c2","c3","a1","m1","th1","sin_p12","cos_p12","Mlp","Ml","Nl1","Nl","psi","Az","G","H","GH","Hs","kp","cos_c","s2","s3","s4","s5","cosAz","Ee","F","sinpsi","FACE_ENUM","FRONT","BACK","TOP","BOTTOM","AREA_ENUM","AREA_0","AREA_1","AREA_2","AREA_3","face","one_minus_f","one_minus_f_squared","xy","area","sinlon","qsc_shift_lon_origin","qsc_fwd_equat_face_theta","nu","cosmu","tannu","tantheta","invert_sign","xa","lp","slon","COEFS_X","COEFS_Y","FXC","FYC","RC1","NODES","poly3_val","coefs","poly3_der","newton_rapshon","f_df","max_err","iters","upd","proj4","tmerc","sterea","stere","somerc","omerc","lcc","krovak","cass","laea","aea","gnom","cea","eqc","poly","nzmg","mill","sinu","moll","eqdc","vandg","aeqd","ortho","qsc","robin","geocent","defaultDatum","version","register","projCodes","axisOrientation","metersPerUnit","code1","proj1","code2","proj2","results","on","prev","activeItemNumber","next","hidePopup","activeItem","service","html","VBtn","VIcon","VProgressCircular","VProgressLinear","stackHas","MOVESTART","MOVEEND","cloneArrayBuffer","cloneDataView","dataView","buffer","byteOffset","byteLength","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","breakpointProps","Boolean","offsetProps","orderProps","col","order","cols","alignSelf","includes","parent","hasColClasses","webpackPolyfill","deprecate","paths","enumerable","l","redefineAll","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","iterable","first","last","getInternalState","define","previous","getEntry","removed","callbackfn","boundFunction","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","done","assocIndexOf","arrayProto","$","isForced","redefine","InternalMetadataModule","fails","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","REQUIRED","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","forced","reFlags","cloneRegExp","regexp","isArguments","isIndex","isTypedArray","arrayLikeKeys","inherited","isArg","isBuff","isType","skipIndexes","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","typedArrayTags","objectCreate","baseCreate","proto","hashHas","mapCacheClear","mapCacheDelete","mapCacheHas","MapCache","Hash","symbolsFunc","stackClear","stackGet","stackSet","tile","computed","classes","styles","minWidth","measurableStyles","$listeners","setBackgroundColor","$slots","disable","none","createSnapToN","opt_isMoving","createSnapToZero","opt_tolerance","tolerance","isNew","newValue","Mode","TRACKPAD","WHEEL","totalDelta_","lastDelta_","maxDelta_","maxDelta","timeout_","timeout","useAnchor_","useAnchor","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","deltaPerZoom_","endInteraction_","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","getConstrainResolution","clearTimeout","setTimeout","adjustZoom","timeLeft","handleWheelZoom_","setMouseAnchor","asyncTag","proxyTag","other","freeProcess","process","types","require","binding","createExtent","onlyCenter","smooth","viewWidth","viewHeight","minX","maxX","minY","maxY","getViewportClampedResolution","maxExtent","viewportSize","showFullExtent","xResolution","yResolution","getSmoothClampedResolution","maxResolution","minResolution","createSnapToResolutions","resolutions","opt_smooth","opt_maxExtent","opt_showFullExtent","direction","cappedMaxRes","capped","createSnapToPower","power","opt_minResolution","minZoomLevel","ceil","cappedZoomLevel","zoomLevel","newResolution","createMinMaxResolution","DEFAULT_MIN_ZOOM","View","hints_","animations_","updateAnimationKey_","projection_","viewportSize_","targetCenter_","targetResolution_","targetRotation_","cancelAnchor_","applyOptions_","properties","resolutionConstraintInfo","createResolutionConstraint","maxResolution_","minResolution_","zoomFactor_","zoomFactor","resolutions_","minZoom_","minZoom","centerConstraint","createCenterConstraint","resolutionConstraint","constraint","rotationConstraint","createRotationConstraint","constraints_","setCenterInternal","setResolution","setProperties","options_","getUpdatedOptions_","newOptions","var_args","isDef","resolveConstraints","args","getProjection","anchor","animationCount","animationCallback","series","animation","complete","sourceCenter","targetCenter","sourceResolution","targetResolution","getResolutionForZoom","sourceRotation","targetRotation","isNoopAnimation","setHint","ViewHint","ANIMATING","updateAnimations_","getInteracting","INTERACTING","cancelAnimationFrame","more","seriesComplete","elapsed","fraction","progress","x1","y1","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","requestAnimationFrame","currentCenter","currentResolution","opt_rotation","w","setViewportSize","opt_size","getCenter","ViewProperty","constrainResolution","getHints","opt_hints","calculateExtent","getMaxResolution","getMinResolution","getMaxZoom","getZoomForResolution","setMaxZoom","maxZoom","getMinZoom","setMinZoom","setConstrainResolution","enabled","getResolutions","getResolutionForExtent","getResolutionForValueFunction","opt_power","getValueForResolutionFunction","logPower","getState","nearest","baseLevel","fit","geometryOrExtent","geometry","getSimplifiedGeometry","getType","GeometryType","CIRCLE","userProjection","clone","fitInternal","padding","getFlatCoordinates","cosAngle","sinAngle","minRotX","minRotY","maxRotX","maxRotY","stride","getStride","rotX","rotY","centerRotX","centerRotY","centerX","centerY","centerOn","centerOnInternal","adjustCenter","deltaCoordinates","setCenter","adjustResolution","opt_anchor","adjustResolutionInternal","isMoving","adjustRotation","newRotation","hint","changed","opt_doNotCancelAnims","opt_forceMoving","newCenter","opt_duration","opt_resolutionDirection","endInteractionInternal","opt_targetResolution","targetZoom","opt_direction","targetRes","returnValue","smoothExtentConstraint","constrainOnlyCenter","multiWorld","isGlobal","defaultMaxZoom","defaultZoomFactor","smoothResolutionConstraint","projExtent","Units","DEGREES","getMetersPerUnit","defaultMaxResolution","defaultMinResolution","enableRotation","constrainRotation","symbolProto","symbolValueOf","valueOf","cloneSymbol","primaryTouchId","mouseCaptureTarget","definePointerCapture","Element","setPointerCapture","setCapture","releasePointerCapture","releaseCapture","addMouseToPointerListener","mouseType","pointerType","mouseEvent","pointerEvent","MouseEvent","pointerId","isPrimary","tiltX","tiltY","buttons","pressure","defaultPrevented","addTouchToPointerListener","touchType","touchEvent","changedTouches","nbTouches","CustomEvent","bubbles","cancelable","ctrlKey","shiftKey","altKey","metaKey","touch","screenX","screenY","pageX","pageY","rect","offsetX","offsetY","identifier","movementX","movementY","region","relatedTarget","window","MAX_SAFE_INTEGER","hashGet","reIsUint","cloneTypedArray","baseIsSet","typedArray","nodeIsMap","DBLCLICK","browserEvent","LARGE_ARRAY_SIZE","pairs","nodeIsSet","cfg","grid","rows","cell","id","sm","md","canBeRemoved","canBeSplit","splitCell","removeCell","content","cells","$event","$set","active","manualWidgetActivation","currentAtlasDisplayType","cardContent","setContent","activateWidget","myMap","noLegendInPreview","mapNr","VAvatar","VCard","VCardActions","VCardText","VCol","VRow","allocUnsafe","copy","LAYERGROUP","SIZE","TARGET","VIEW","lastDistance_","lastScaleDelta_","scaleDelta","arrayBuffer","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserEventHandler","moveTolerance","clickTimeoutId_","dragging_","dragListenerKeys_","moveTolerance_","down_","activePointers_","trackedTouches_","pointerdownListenerKey_","handlePointerDown_","originalPointerMoveEvent_","relayedListenerKey_","relayEvent_","boundHandleTouchMove_","handleTouchMove_","TOUCHMOVE","passive","emulateClick_","newEvent","MapBrowserPointerEvent","MapBrowserEventType","SINGLECLICK","updateActivePointers_","handlePointerUp_","propagationStopped","isMouseActionButton_","handlePointerMove_","isMoving_","POINTERDRAG","dragging","removeEventListener","DROP","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","elements","priorities","siftUp_","elementKey","enqueue","priority","siftDown_","getCount","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isEmpty","isKeyQueued","isQueued","count","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","getKey","boundHandleTileChange_","handleTileChange","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","added","CHANGE","getTilesLoading","hifi","TileState","LOADED","ERROR","EMPTY","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","IDLE","load","getTilePriority","tileSourceKey","tileCenter","tileResolution","wantedTiles","Property","LAYERS","LayerGroup","baseOptions","layers","layersListenerKeys_","listenerKeys_","handleLayersChanged_","unique","getArray","setLayers","handleLayerChange_","getLayers","CollectionEventType","ADD","handleLayersAdd_","REMOVE","handleLayersRemove_","layersArray","collectionEvent","getLayersArray","opt_array","getLayerStatesArray","opt_states","states","pos","ownLayerState","getLayerState","getSourceState","Base","optionsInternal","createOptionsInternal","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","pixelRatio_","pixelRatio","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overflow","overlayContainer_","overlayContainerStopEvent_","mapBrowserEventHandler_","handleMapBrowserEvent","keyboardEventTarget_","keyboardEventTarget","keyHandlerKeys_","CONTEXTMENU","overlays_","overlays","overlayIdIndex_","renderer_","handleResize_","postRenderFunctions_","tileQueue_","handleTileChange_","MapProperty","handleLayerGroupChanged_","handleViewChanged_","handleSizeChanged_","handleTargetChanged_","control","interaction","addOverlayInternal_","overlay","getId","addControl","getControls","addInteraction","getInteractions","addLayer","getLayerGroup","addOverlay","getOverlays","dispose","RESIZE","forEachFeatureAtPixel","getFeaturesAtPixel","features","hasFeatureAtPixel","getEventCoordinate","getCoordinateFromPixel","getEventPixel","getEventCoordinateInternal","eventPosition","getTarget","getOverlayById","getLoading","loading","getPixelFromCoordinate","viewCoordinate","opt_type","MapBrowserEvent","body","getRootNode","interactionsArray","getActive","cont","handlePostRender","tileQueue","hints","viewHints","lowOnFrameBudget","time","RENDERCOMPLETE","targetElement","updateSize","handleViewPropertyChanged_","updateViewportSize_","layerGroup","isRendered","renderSync","handleFontsChanged","removeControl","removeInteraction","removeLayer","removeOverlay","previousFrameState","usedTiles","moveStart","MapEvent","MapEventType","idle","setLayerGroup","setSize","setView","computedStyle","getComputedStyle","offsetWidth","offsetHeight"],"mappings":"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uBACA,MAEA,EACA,EAFA,KAGA,aAEA,yBACA,uCACA,0BACA,4BACA,cACA,IACA,0BAGA,0EACA,GACA,SACA,YACA,sBACA,sCACA,iCACA,yCACA,qEAEA,EACA,kBAEA,iCACA,KACA,uCACA,2DACA,gBAGA,WACA,8BAIA,4EACA,gBACA,aACA,SACA,qCAEA,kBACA,iBACA,gBAEA,OAEA,iBACA,MACA,KACA,IACA,oBACA,eACA,aAEA,UAIA,EACA,GACA,QACA,UAGA,KAEA,uBACA,WAEA,WACA,oEACA,8BAEA,6BAEA,0BACA,4BACA,cACA,IACA,sBAGA,uHACA,wBACA,+BACA,gBACA,eACA,kBACA,iBACA,gBAEA,OAEA,iBACA,GACA,QACA,UAEA,uBACA,aAIA,SAGA,KAEA,YACA,UAEA,gBACA,8BACA,MACA,yBAEA,yBAEA,gBACA,8BACA,yBACA,KAEA,yBAEA,wBACA,MAQA,GAPA,QACA,uBACA,QACA,uBACA,WACA,0BAEA,GACA,mBACA,aAEA,qBACA,gCACA,mBACA,cAEA,uCAEA,gDAIA,OACA,GACA,aACA,oBACA,MACA,4BACA,iDAEA,yCACA,mBACA,mBACA,cACA,2BACA,cACA,wBACA,4BAGA,cAEA,gDAEA,mBACA,sCAEA,cACA,gBACA,yCACA,uBAEA,6BACA,kDAKA,kBACA,aACA,oBACA,gCACA,mCAIA,YACA,aACA,oBACA,oBACA,uCAEA,GACA,yBACA,sCC5Wib,M,2ECQ7a,GAAY,gBACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIa,MAAiB,QAOhC,KAAkB,GAAW,CAACu7B,QAAA,KAAKC,SAAA,KAAMC,qBAAA,OCWzC,QACA,OACA,eACA,4BACA,kBAEA,gBACA,OACA,WACA,uBACA,UAEA,UAEA,YACA,cACA,aAEA,UACA,WACA,eACA,uBAIA,QAzBA,WA0BA,iBACA,yIACA,OACA,OACA,kCACA,oCACA,kBACA,uBACA,8BACA,cAEA,0BACA,0CAEA,gBACA,sBACA,uCAEA,0CACA,MACA,8BACA,wBACA,gCACA,8BACA,YACA,8BACA,8BACA,YACA,gCACA,8BACA,aAEA,oBACA,wBACA,iCAEA,8BACA,YACA,+BAEA,8BACA,YACA,iCAEA,8BACA,cAGA,YACA,sCAsBA,GArBA,2DAGA,uCAEA,gBACA,sBACA,WACA,uCACA,uCACA,0BACA,sCACA,SACA,WACA,yBAKA,wCAEA,0BACA,oCACA,QACA,yCACA,oDACA,QACA,yCAEA,mEACA,sBACA,KACA,MAEA,iBACA,qDAGA,YAEA,kBACA,YAEA,6CACA,mEAGA,gCACA,wBACA,oBAEA,YACA,iBACA,YACA,2CACA,gEAEA,iDAEA,yBACA,yCACA,kDAEA,SACA,qBACA,6BACA,cACA,iCAEA,gEACA,MACA,EACA,WACA,yBACA,gCACA,2BAEA,gCACA,2BAEA,+BACA,4BACA,kBAGA,qBACA,MAGA,2BAEA,YACA,cAEA,8BACA,sBACA,YACA,eAEA,yCACA,8BACA,aAEA,yBACA,gCAEA,OADA,8EACA,GAEA,uBACA,6BACA,uBAGA,sBACA,IAGA,EAHA,KACA,KACA,KAcA,gBACA,WASA,OAtBA,UACA,0CACA,YACA,gBACA,MACA,8CAEA,OACA,cAOA,UACA,uBACA,gBAEA,GACA,YAEA,GAEA,wBAEA,OADA,kBACA,gBAEA,uBACA,SACA,UACA,4CACA,8BACA,SACA,iDACA,6BAEA,GACA,cAKA,UACA,GACA,yBACA,UAEA,4CAEA,2CAIA,qBACA,eAEA,OACA,2BACA,aACA,oBAEA,GADA,kBACA,SACA,KACA,wBACA,CACA,+BACA,yBC1S8a,M,yBCQ1a,GAAY,gBACd,GACAr1C,EACAiJ,GACA,EACA,KACA,WACA,MAIa,UAAiB,QAMhC,KAAkB,GAAW,CAACosC,qBAAA,KAAkBC,mBAAA,Q,uBCzBhD,IAAIv3C,EAAa,EAAQ,QACrB0V,EAAa,EAAQ,QAUzB,SAASmB,EAAY1W,EAAQ1C,GAC3B,OAAOuC,EAAWG,EAAQuV,EAAWvV,GAAS1C,GAGhDnD,EAAOC,QAAUsc,G,qBCNjB,SAAS2gC,EAAS95C,GAChB,OAAOzC,KAAKqQ,SAASD,IAAI3N,GAG3BpD,EAAOC,QAAUi9C,G,uBC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AIQ,GAAGR,EAAIS,GAAGT,EAAImqD,YAAYnyD,KAAKwyD,aAAa,GAAGxqD,EAAIsR,MAAM,KACrgG,EAAkB,G,wBCwGtB,GACA,OACA,UACA,qBACA,mBACA,mBACA,oBACA,eACA,+BACA,WACA,WAEA,gBACA,OACA,WAEA,UAEA,UACA,yBACA,eACA,mDAGA,aACA,eACA,qBAEA,gBACA,iCAGA,cACA,eACA,yCAIA,YACA,cAEA,SACA,yBACA,MACA,KACA,GACA,OACA,cAGA,4DAEA,CACA,OACA,2CACA,6CACA,8CACA,+BACA,oBACA,0BACA,YAGA,YADA,8BAIA,oBAEA,0BACA,2DACA,2CAEA,sCACA,yBACA,yBAKA,mBACA,4CAEA,qBACA,4CAEA,OACA,aACA,aACA,oBACA,EACA,6BAEA,sCACA,4BAIA,oFACA,6CAKA,yBAEA,cADA,GACA,oCClN+a,I,yGCQ3a1Q,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,EAAiB,QAUhC,IAAkBA,EAAW,CAAC6pD,UAAA,KAAQ5d,OAAA,KAAK6d,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAU9d,QAAA,O,gBCIxE,GACA,OACA,YAEA,YACA,UAEA,gBACA,SACA,GACA,OACA,4DAEA,UAEA,SACA,gCACA,oBACA,KACA,WACA,IACA,IACA,QACA,MACA,eACA,IACA,kBAGA,0BACA,MACA,IACA,EADA,IAEA,IACA,sBACA,QACA,OACA,YACA,GACA,oBACA,SAEA,eACA,6BACA,gBACA,qCACA,KACA,iBAGA,QACA,gBACA,QACA,mBACA,wBACA,aAEA,iBAEA,qBACA,QACA,gBACA,YACA,YACA,+BAKA,OADA,qBACA,GAEA,iBAMA,OALA,QAGA,WAFA,UAIA,SAEA,wBACA,QAMA,OALA,MACA,MACA,QAGA,GAEA,sBACA,MACA,EAQA,GAPA,+BACA,WAGA,OAFA,IACA,KACA,KAGA,GACA,SACA,gCACA,cACA,aAGA,mCACA,wCAEA,kBACA,QACA,OACA,yBACA,gBACA,gBACA,KACA,KACA,YAEA,oDACA,qBACA,gBAIA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","file":"js/chunk-7abec3a8.f4a562cf.js","sourcesContent":["var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragZoom\n */\nimport { easeOut } from '../easing.js';\nimport { shiftKeyOnly } from '../events/condition.js';\nimport { createOrUpdateFromCoordinates, getBottomLeft, getCenter, getTopRight, scaleFromCenter } from '../extent.js';\nimport DragBox from './DragBox.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragzoom'] CSS class name for styling the\n * box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition~shiftKeyOnly}.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {boolean} [out=false] Use interaction for zooming out.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the parent default\n * `boxEndCondition` function.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when a key, shift by default, is held down.\n *\n * To change the style of the box, use CSS and the `.ol-dragzoom` selector, or\n * your custom one configured with `className`.\n * @api\n */\nvar DragZoom = /** @class */ (function (_super) {\n __extends(DragZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var condition = options.condition ? options.condition : shiftKeyOnly;\n _this = _super.call(this, {\n condition: condition,\n className: options.className || 'ol-dragzoom',\n minArea: options.minArea,\n onBoxEnd: onBoxEnd\n }) || this;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 200;\n /**\n * @private\n * @type {boolean}\n */\n _this.out_ = options.out !== undefined ? options.out : false;\n return _this;\n }\n return DragZoom;\n}(DragBox));\n/**\n * @this {DragZoom}\n */\nfunction onBoxEnd() {\n var map = this.getMap();\n var view = /** @type {!import(\"../View.js\").default} */ (map.getView());\n var size = /** @type {!import(\"../size.js\").Size} */ (map.getSize());\n var extent = this.getGeometry().getExtent();\n if (this.out_) {\n var mapExtent = view.calculateExtentInternal(size);\n var boxPixelExtent = createOrUpdateFromCoordinates([\n map.getPixelFromCoordinateInternal(getBottomLeft(extent)),\n map.getPixelFromCoordinateInternal(getTopRight(extent))\n ]);\n var factor = view.getResolutionForExtentInternal(boxPixelExtent, size);\n scaleFromCenter(mapExtent, 1 / factor);\n extent = mapExtent;\n }\n var resolution = view.getConstrainedResolution(view.getResolutionForExtentInternal(extent, size));\n var center = view.getConstrainedCenter(getCenter(extent), resolution);\n view.animateInternal({\n resolution: resolution,\n center: center,\n duration: this.duration_,\n easing: easeOut\n });\n}\nexport default DragZoom;\n//# sourceMappingURL=DragZoom.js.map","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/KeyboardZoom\n */\nimport EventType from '../events/EventType.js';\nimport { targetNotEditable } from '../events/condition.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition~targetNotEditable}.\n * @property {number} [delta=1] The zoom level delta on each key press.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map using keyboard + and -.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.\n * @api\n */\nvar KeyboardZoom = /** @class */ (function (_super) {\n __extends(KeyboardZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function KeyboardZoom(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : targetNotEditable;\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 100;\n return _this;\n }\n return KeyboardZoom;\n}(Interaction));\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides whether to zoom in or out (depending on whether the\n * key pressed was '+' or '-').\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {KeyboardZoom}\n */\nfunction handleEvent(mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN ||\n mapBrowserEvent.type == EventType.KEYPRESS) {\n var keyEvent = /** @type {KeyboardEvent} */ (mapBrowserEvent.originalEvent);\n var charCode = keyEvent.charCode;\n if (this.condition_(mapBrowserEvent) &&\n (charCode == '+'.charCodeAt(0) || charCode == '-'.charCodeAt(0))) {\n var map = mapBrowserEvent.map;\n var delta = (charCode == '+'.charCodeAt(0)) ? this.delta_ : -this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, undefined, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n}\nexport default KeyboardZoom;\n//# sourceMappingURL=KeyboardZoom.js.map","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * @module ol/render\n */\nimport { DEVICE_PIXEL_RATIO } from './has.js';\nimport { apply as applyTransform, create as createTransform, multiply as multiplyTransform, scale as scaleTransform } from './transform.js';\nimport CanvasImmediateRenderer from './render/canvas/Immediate.js';\nimport { getSquaredTolerance } from './renderer/vector.js';\nimport { getUserProjection, getTransformFromProjections } from './proj.js';\n/**\n * @typedef {Object} State\n * @property {CanvasRenderingContext2D} context Canvas context that the layer is being rendered to.\n * @property {import(\"./Feature.js\").FeatureLike} feature\n * @property {import(\"./geom/SimpleGeometry.js\").default} geometry\n * @property {number} pixelRatio Pixel ratio used by the layer renderer.\n * @property {number} resolution Resolution that the render batch was created and optimized for.\n * This is not the view's resolution that is being rendered.\n * @property {number} rotation Rotation of the rendered layer in radians.\n */\n/**\n * A function to be used when sorting features before rendering.\n * It takes two instances of {@link module:ol/Feature} or\n * {@link module:ol/render/Feature} and returns a `{number}`.\n *\n * @typedef {function(import(\"./Feature.js\").FeatureLike, import(\"./Feature.js\").FeatureLike):number} OrderFunction\n */\n/**\n * @typedef {Object} ToContextOptions\n * @property {import(\"./size.js\").Size} [size] Desired size of the canvas in css\n * pixels. When provided, both canvas and css size will be set according to the\n * `pixelRatio`. If not provided, the current canvas and css sizes will not be\n * altered.\n * @property {number} [pixelRatio=window.devicePixelRatio] Pixel ratio (canvas\n * pixel to css pixel ratio) for the canvas.\n */\n/**\n * Binds a Canvas Immediate API to a canvas context, to allow drawing geometries\n * to the context's canvas.\n *\n * The units for geometry coordinates are css pixels relative to the top left\n * corner of the canvas element.\n * ```js\n * import {toContext} from 'ol/render';\n * import Fill from 'ol/style/Fill';\n * import Polygon from 'ol/geom/Polygon';\n *\n * var canvas = document.createElement('canvas');\n * var render = toContext(canvas.getContext('2d'),\n * { size: [100, 100] });\n * render.setFillStrokeStyle(new Fill({ color: blue }));\n * render.drawPolygon(\n * new Polygon([[[0, 0], [100, 100], [100, 0], [0, 0]]]));\n * ```\n *\n * @param {CanvasRenderingContext2D} context Canvas context.\n * @param {ToContextOptions=} opt_options Options.\n * @return {CanvasImmediateRenderer} Canvas Immediate.\n * @api\n */\nexport function toContext(context, opt_options) {\n var canvas = context.canvas;\n var options = opt_options ? opt_options : {};\n var pixelRatio = options.pixelRatio || DEVICE_PIXEL_RATIO;\n var size = options.size;\n if (size) {\n canvas.width = size[0] * pixelRatio;\n canvas.height = size[1] * pixelRatio;\n canvas.style.width = size[0] + 'px';\n canvas.style.height = size[1] + 'px';\n }\n var extent = [0, 0, canvas.width, canvas.height];\n var transform = scaleTransform(createTransform(), pixelRatio, pixelRatio);\n return new CanvasImmediateRenderer(context, pixelRatio, extent, transform, 0);\n}\n/**\n * Gets a vector context for drawing to the event's canvas.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @returns {CanvasImmediateRenderer} Vector context.\n * @api\n */\nexport function getVectorContext(event) {\n var frameState = event.frameState;\n var transform = multiplyTransform(event.inversePixelTransform.slice(), frameState.coordinateToPixelTransform);\n var squaredTolerance = getSquaredTolerance(frameState.viewState.resolution, frameState.pixelRatio);\n var userTransform;\n var userProjection = getUserProjection();\n if (userProjection) {\n userTransform = getTransformFromProjections(userProjection, frameState.viewState.projection);\n }\n return new CanvasImmediateRenderer(event.context, frameState.pixelRatio, frameState.extent, transform, frameState.viewState.rotation, squaredTolerance, userTransform);\n}\n/**\n * Gets the pixel of the event's canvas context from the map viewport's CSS pixel.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @param {import(\"./pixel.js\").Pixel} pixel CSS pixel relative to the top-left\n * corner of the map viewport.\n * @returns {import(\"./pixel.js\").Pixel} Pixel on the event's canvas context.\n * @api\n */\nexport function getRenderPixel(event, pixel) {\n var result = pixel.slice(0);\n applyTransform(event.inversePixelTransform.slice(), result);\n return result;\n}\n/**\n * @param {import(\"./PluggableMap.js\").FrameState} frameState Frame state.\n * @param {?} declutterTree Declutter tree.\n * @returns {?} Declutter tree.\n */\nexport function renderDeclutterItems(frameState, declutterTree) {\n if (declutterTree) {\n declutterTree.clear();\n }\n var items = frameState.declutterItems;\n for (var z = items.length - 1; z >= 0; --z) {\n var item = items[z];\n var zIndexItems = item.items;\n for (var i = 0, ii = zIndexItems.length; i < ii; i += 3) {\n declutterTree = zIndexItems[i].renderDeclutter(zIndexItems[i + 1], zIndexItems[i + 2], item.opacity, declutterTree);\n }\n }\n items.length = 0;\n return declutterTree;\n}\n//# sourceMappingURL=render.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Map\n */\nimport { abstract } from '../util.js';\nimport Disposable from '../Disposable.js';\nimport { getWidth } from '../extent.js';\nimport { TRUE } from '../functions.js';\nimport { inView } from '../layer/Layer.js';\nimport { shared as iconImageCache } from '../style/IconImageCache.js';\nimport { compose as composeTransform, makeInverse } from '../transform.js';\nimport { renderDeclutterItems } from '../render.js';\nimport { wrapX } from '../coordinate.js';\n/**\n * @abstract\n */\nvar MapRenderer = /** @class */ (function (_super) {\n __extends(MapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function MapRenderer(map) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = map;\n /**\n * @private\n */\n _this.declutterTree_ = null;\n return _this;\n }\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n MapRenderer.prototype.calculateMatrices2D = function (frameState) {\n var viewState = frameState.viewState;\n var coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n var pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n composeTransform(coordinateToPixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / viewState.resolution, -1 / viewState.resolution, -viewState.rotation, -viewState.center[0], -viewState.center[1]);\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: S, import(\"../Feature.js\").FeatureLike,\n * import(\"../layer/Layer.js\").default): T} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, callback, thisArg, layerFilter, thisArg2) {\n var result;\n var viewState = frameState.viewState;\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @return {?} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer) {\n return callback.call(thisArg, feature, managed ? layer : null);\n }\n var projection = viewState.projection;\n var translatedCoordinate = wrapX(coordinate.slice(), projection);\n var offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n var projectionExtent = projection.getExtent();\n var worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n var declutteredFeatures;\n if (this.declutterTree_) {\n declutteredFeatures = this.declutterTree_.all().map(function (entry) {\n return entry.value;\n });\n }\n var tmpCoord = [];\n for (var i = 0; i < offsets.length; i++) {\n for (var j = numLayers - 1; j >= 0; --j) {\n var layerState = layerStates[j];\n var layer = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer);\n if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter.call(thisArg2, layer)) {\n var layerRenderer = layer.getRenderer();\n var source = layer.getSource();\n if (layerRenderer && source) {\n var coordinates = source.getWrapX() ? translatedCoordinate : coordinate;\n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, declutteredFeatures);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(this: S, import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n MapRenderer.prototype.hasFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n var hasFeature = this.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n return hasFeature !== undefined;\n };\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n MapRenderer.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.renderFrame = function (frameState) {\n this.declutterTree_ = renderDeclutterItems(frameState, this.declutterTree_);\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n MapRenderer.prototype.scheduleExpireIconCache = function (frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n };\n return MapRenderer;\n}(Disposable));\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\nexport default MapRenderer;\n//# sourceMappingURL=Map.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Composite\n */\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { inView } from '../layer/Layer.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport MapRenderer from './Map.js';\nimport SourceState from '../source/State.js';\nimport { replaceChildren } from '../dom.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { checkedFonts } from '../render/canvas.js';\nimport ObjectEventType from '../ObjectEventType.js';\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nvar CompositeMapRenderer = /** @class */ (function (_super) {\n __extends(CompositeMapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function CompositeMapRenderer(map) {\n var _this = _super.call(this, map) || this;\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n _this.fontChangeListenerKey_ = listen(checkedFonts, ObjectEventType.PROPERTYCHANGE, map.redrawText.bind(map));\n /**\n * @private\n * @type {HTMLDivElement}\n */\n _this.element_ = document.createElement('div');\n var style = _this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n _this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n var container = map.getViewport();\n container.insertBefore(_this.element_, container.firstChild || null);\n /**\n * @private\n * @type {Array}\n */\n _this.children_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n var map = this.getMap();\n if (map.hasListener(type)) {\n var event_1 = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event_1);\n }\n };\n CompositeMapRenderer.prototype.disposeInternal = function () {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * @inheritDoc\n */\n CompositeMapRenderer.prototype.renderFrame = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n var layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n var viewState = frameState.viewState;\n this.children_.length = 0;\n var previousElement = null;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY && layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n var layer = layerState.layer;\n var element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n }\n _super.prototype.renderFrame.call(this, frameState);\n replaceChildren(this.element_, this.children_);\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n this.scheduleExpireIconCache(frameState);\n };\n /**\n * @inheritDoc\n */\n CompositeMapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n var viewState = frameState.viewState;\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n for (var i = numLayers - 1; i >= 0; --i) {\n var layerState = layerStates[i];\n var layer = layerState.layer;\n if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter(layer)) {\n var layerRenderer = layer.getRenderer();\n var data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n var result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n return CompositeMapRenderer;\n}(MapRenderer));\nexport default CompositeMapRenderer;\n//# sourceMappingURL=Composite.js.map","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"table-wrapper\"},[_c('table',{staticClass:\"mt-3 body-2\"},[_vm._l((_vm.attributes),function(attr,n){return [_c('tr',{key:n},[_c('th',{staticClass:\"pa-1\"},[_vm._v(_vm._s(attr.key))]),_c('td',{staticClass:\"pa-1\",domProps:{\"innerHTML\":_vm._s(attr.value)}})])]})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapLayerAttributes.vue?vue&type=template&id=e37f168e&scoped=true&\"\nimport script from \"./MapLayerAttributes.vue?vue&type=script&lang=js&\"\nexport * from \"./MapLayerAttributes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapLayerAttributes.vue?vue&type=style&index=0&id=e37f168e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e37f168e\",\n null\n \n)\n\nexport default component.exports","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 EventType from '../events/EventType.js';\nimport { inView } from '../layer/Layer.js';\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 * @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 */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = (_this.collapsible_ && !_this.collapsed_) ?\n _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\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 Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n if (Array.isArray(attributions)) {\n for (var 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 }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\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 Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (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 * 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 Attribution.prototype.setCollapsed = function (collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\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 Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n return Attribution;\n}(Control));\n/**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Attribution}\n */\nexport function render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n}\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 EventType from '../events/EventType.js';\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 * @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 */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = 'ol-compass';\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add('ol-compass');\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var 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 var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n return Rotate;\n}(Control));\n/**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Rotate}\n */\nexport function render(mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n}\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\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 * @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 * @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 */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ?\n options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?\n options.zoomOutTipLabel : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var 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 var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/control\n */\nimport Collection from './Collection.js';\nimport Attribution from './control/Attribution.js';\nimport Rotate from './control/Rotate.js';\nimport Zoom from './control/Zoom.js';\nexport { default as Attribution } from './control/Attribution.js';\nexport { default as Control } from './control/Control.js';\nexport { default as FullScreen } from './control/FullScreen.js';\nexport { default as MousePosition } from './control/MousePosition.js';\nexport { default as OverviewMap } from './control/OverviewMap.js';\nexport { default as Rotate } from './control/Rotate.js';\nexport { default as ScaleLine } from './control/ScaleLine.js';\nexport { default as Zoom } from './control/Zoom.js';\nexport { default as ZoomSlider } from './control/ZoomSlider.js';\nexport { default as ZoomToExtent } from './control/ZoomToExtent.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./control/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(\"./control/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(\"./control/Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\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 * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var controls = new Collection();\n var zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n var rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n var attributionControl = options.attribution !== undefined ?\n options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n return controls;\n}\n//# sourceMappingURL=control.js.map","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyCard.vue?vue&type=style&index=0&id=096faccb&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyCard.vue?vue&type=style&index=0&id=096faccb&scoped=true&lang=css&\"","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * @module ol/render/Box\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Disposable from '../Disposable.js';\nimport Polygon from '../geom/Polygon.js';\nvar RenderBox = /** @class */ (function (_super) {\n __extends(RenderBox, _super);\n /**\n * @param {string} className CSS class name.\n */\n function RenderBox(className) {\n var _this = _super.call(this) || this;\n /**\n * @type {import(\"../geom/Polygon.js\").default}\n * @private\n */\n _this.geometry_ = null;\n /**\n * @type {HTMLDivElement}\n * @private\n */\n _this.element_ = document.createElement('div');\n _this.element_.style.position = 'absolute';\n _this.element_.className = 'ol-box ' + className;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.startPixel_ = null;\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.endPixel_ = null;\n return _this;\n }\n /**\n * @inheritDoc\n */\n RenderBox.prototype.disposeInternal = function () {\n this.setMap(null);\n };\n /**\n * @private\n */\n RenderBox.prototype.render_ = function () {\n var startPixel = this.startPixel_;\n var endPixel = this.endPixel_;\n var px = 'px';\n var style = this.element_.style;\n style.left = Math.min(startPixel[0], endPixel[0]) + px;\n style.top = Math.min(startPixel[1], endPixel[1]) + px;\n style.width = Math.abs(endPixel[0] - startPixel[0]) + px;\n style.height = Math.abs(endPixel[1] - startPixel[1]) + px;\n };\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n RenderBox.prototype.setMap = function (map) {\n if (this.map_) {\n this.map_.getOverlayContainer().removeChild(this.element_);\n var style = this.element_.style;\n style.left = 'inherit';\n style.top = 'inherit';\n style.width = 'inherit';\n style.height = 'inherit';\n }\n this.map_ = map;\n if (this.map_) {\n this.map_.getOverlayContainer().appendChild(this.element_);\n }\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} startPixel Start pixel.\n * @param {import(\"../pixel.js\").Pixel} endPixel End pixel.\n */\n RenderBox.prototype.setPixels = function (startPixel, endPixel) {\n this.startPixel_ = startPixel;\n this.endPixel_ = endPixel;\n this.createOrUpdateGeometry();\n this.render_();\n };\n /**\n * Creates or updates the cached geometry.\n */\n RenderBox.prototype.createOrUpdateGeometry = function () {\n var startPixel = this.startPixel_;\n var endPixel = this.endPixel_;\n var pixels = [\n startPixel,\n [startPixel[0], endPixel[1]],\n endPixel,\n [endPixel[0], startPixel[1]]\n ];\n var coordinates = pixels.map(this.map_.getCoordinateFromPixelInternal, this.map_);\n // close the polygon\n coordinates[4] = coordinates[0].slice();\n if (!this.geometry_) {\n this.geometry_ = new Polygon([coordinates]);\n }\n else {\n this.geometry_.setCoordinates([coordinates]);\n }\n };\n /**\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n */\n RenderBox.prototype.getGeometry = function () {\n return this.geometry_;\n };\n return RenderBox;\n}(Disposable));\nexport default RenderBox;\n//# sourceMappingURL=Box.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragBox\n */\n// FIXME draw drag box\nimport Event from '../events/Event.js';\nimport { mouseActionButton } from '../events/condition.js';\nimport { VOID } from '../functions.js';\nimport PointerInteraction from './Pointer.js';\nimport RenderBox from '../render/Box.js';\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s and returns a `{boolean}`. If the condition is met,\n * true should be returned.\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default, import(\"../pixel.js\").Pixel, import(\"../pixel.js\").Pixel):boolean} EndCondition\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragbox'] CSS class name for styling the box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link ol/events/condition~mouseActionButton}.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the default\n * `boxEndCondition` function.\n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s to indicate whether a `boxend` event should be fired.\n * Default is `true` if the area of the box is bigger than the `minArea` option.\n * @property {function(this:DragBox, import(\"../MapBrowserEvent.js\").default)} [onBoxEnd] Code to execute just\n * before `boxend` is fired.\n */\n/**\n * @enum {string}\n */\nvar DragBoxEventType = {\n /**\n * Triggered upon drag box start.\n * @event DragBoxEvent#boxstart\n * @api\n */\n BOXSTART: 'boxstart',\n /**\n * Triggered on drag when box is active.\n * @event DragBoxEvent#boxdrag\n * @api\n */\n BOXDRAG: 'boxdrag',\n /**\n * Triggered upon drag box end.\n * @event DragBoxEvent#boxend\n * @api\n */\n BOXEND: 'boxend'\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances of\n * this type.\n */\nvar DragBoxEvent = /** @class */ (function (_super) {\n __extends(DragBoxEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Originating event.\n */\n function DragBoxEvent(type, coordinate, mapBrowserEvent) {\n var _this = _super.call(this, type) || this;\n /**\n * The coordinate of the drag event.\n * @const\n * @type {import(\"../coordinate.js\").Coordinate}\n * @api\n */\n _this.coordinate = coordinate;\n /**\n * @const\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n _this.mapBrowserEvent = mapBrowserEvent;\n return _this;\n }\n return DragBoxEvent;\n}(Event));\n/**\n * @classdesc\n * Allows the user to draw a vector box by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the shift or other key is held down. This is used, for example,\n * for zooming to a specific area of the map\n * (see {@link module:ol/interaction/DragZoom~DragZoom} and\n * {@link module:ol/interaction/DragRotateAndZoom}).\n *\n * @fires DragBoxEvent\n * @api\n */\nvar DragBox = /** @class */ (function (_super) {\n __extends(DragBox, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragBox(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @type {import(\"../render/Box.js\").default}\n * @private\n */\n _this.box_ = new RenderBox(options.className || 'ol-dragbox');\n /**\n * @type {number}\n * @private\n */\n _this.minArea_ = options.minArea !== undefined ? options.minArea : 64;\n /**\n * Function to execute just before `onboxend` is fired\n * @type {function(this:DragBox, import(\"../MapBrowserEvent.js\").default): void}\n * @private\n */\n _this.onBoxEnd_ = options.onBoxEnd ? options.onBoxEnd : VOID;\n /**\n * @type {import(\"../pixel.js\").Pixel}\n * @private\n */\n _this.startPixel_ = null;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : mouseActionButton;\n /**\n * @private\n * @type {EndCondition}\n */\n _this.boxEndCondition_ = options.boxEndCondition ?\n options.boxEndCondition : _this.defaultBoxEndCondition;\n return _this;\n }\n /**\n * The default condition for determining whether the boxend event\n * should fire.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent The originating MapBrowserEvent\n * leading to the box end.\n * @param {import(\"../pixel.js\").Pixel} startPixel The starting pixel of the box.\n * @param {import(\"../pixel.js\").Pixel} endPixel The end pixel of the box.\n * @return {boolean} Whether or not the boxend condition should be fired.\n */\n DragBox.prototype.defaultBoxEndCondition = function (mapBrowserEvent, startPixel, endPixel) {\n var width = endPixel[0] - startPixel[0];\n var height = endPixel[1] - startPixel[1];\n return width * width + height * height >= this.minArea_;\n };\n /**\n * Returns geometry of last drawn box.\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n * @api\n */\n DragBox.prototype.getGeometry = function () {\n return this.box_.getGeometry();\n };\n /**\n * @inheritDoc\n */\n DragBox.prototype.handleDragEvent = function (mapBrowserEvent) {\n this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXDRAG, mapBrowserEvent.coordinate, mapBrowserEvent));\n };\n /**\n * @inheritDoc\n */\n DragBox.prototype.handleUpEvent = function (mapBrowserEvent) {\n this.box_.setMap(null);\n if (this.boxEndCondition_(mapBrowserEvent, this.startPixel_, mapBrowserEvent.pixel)) {\n this.onBoxEnd_(mapBrowserEvent);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXEND, mapBrowserEvent.coordinate, mapBrowserEvent));\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n DragBox.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.condition_(mapBrowserEvent)) {\n this.startPixel_ = mapBrowserEvent.pixel;\n this.box_.setMap(mapBrowserEvent.map);\n this.box_.setPixels(this.startPixel_, this.startPixel_);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXSTART, mapBrowserEvent.coordinate, mapBrowserEvent));\n return true;\n }\n else {\n return false;\n }\n };\n return DragBox;\n}(PointerInteraction));\nexport default DragBox;\n//# sourceMappingURL=DragBox.js.map","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * @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 * @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 */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = options.element ? options.element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n /**\n * @private\n * @type {function(import(\"../MapEvent.js\").default): void}\n */\n _this.render_ = options.render ? options.render : VOID;\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * @inheritDoc\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\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 Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var 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 var target = this.target_ ?\n this.target_ : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Update the projection. Rendering of the coordinates is done in\n * `handleMouseMove` and `handleMouseUp`.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) {\n this.render_.call(this, mapEvent);\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 Control.prototype.setTarget = function (target) {\n this.target_ = typeof target === 'string' ?\n document.getElementById(target) :\n target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation'\n};\n//# sourceMappingURL=ViewProperty.js.map","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.github.io/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=style&index=0&id=36135895&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=style&index=0&id=36135895&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=style&index=0&id=e37f168e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=style&index=0&id=e37f168e&scoped=true&lang=css&\"","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"map\",staticClass:\"map-cont\"},[(_vm.loading)?[_c('v-progress-circular',{staticClass:\"ma-2\",attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"size\":30,\"width\":\"2\"}})]:_vm._e(),(_vm.layersLoadingCounter)?[_c('v-progress-linear',{staticClass:\"layer-loading-indicator\",attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"height\":\"2\"}})]:_vm._e(),(_vm.map)?_c('MapPopup',{attrs:{\"map\":_vm.map}}):_vm._e(),_c('MapTooltip',{ref:\"tooltip\"})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @module ol/Kinetic\n */\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nvar Kinetic = /** @class */ (function () {\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 function Kinetic(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n /**\n * FIXME empty description for jsdoc\n */\n Kinetic.prototype.begin = function () {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n Kinetic.prototype.update = function (x, y) {\n this.points_.push(x, y, Date.now());\n };\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n Kinetic.prototype.end = function () {\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 var delay = Date.now() - this.delay_;\n var 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 // get the first point which still falls into the delay time\n var firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n var 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 var dx = this.points_[lastIndex] - this.points_[firstIndex];\n var 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 * @return {number} Total distance travelled (pixels).\n */\n Kinetic.prototype.getDistance = function () {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n };\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n Kinetic.prototype.getAngle = function () {\n return this.angle_;\n };\n return Kinetic;\n}());\nexport default Kinetic;\n//# sourceMappingURL=Kinetic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragPan\n */\nimport { scale as scaleCoordinate, rotate as rotateCoordinate } from '../coordinate.js';\nimport { easeOut } from '../easing.js';\nimport { noModifierKeys, primaryAction, focus } from '../events/condition.js';\nimport { FALSE } from '../functions.js';\nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition~noModifierKeys} and {@link module:ol/events/condition~primaryAction}.\n * In addition, if there is a `tabindex` attribute on the map element,\n * {@link module:ol/events/condition~focus} will also be applied.\n * @property {import(\"../Kinetic.js\").default} [kinetic] Kinetic inertia to apply to the pan.\n */\n/**\n * @classdesc\n * Allows the user to pan the map by dragging the map.\n * @api\n */\nvar DragPan = /** @class */ (function (_super) {\n __extends(DragPan, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragPan(opt_options) {\n var _this = _super.call(this, {\n stopDown: FALSE\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {import(\"../Kinetic.js\").default|undefined}\n */\n _this.kinetic_ = options.kinetic;\n /**\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.lastCentroid = null;\n /**\n * @type {number}\n */\n _this.lastPointersCount_;\n /**\n * @type {boolean}\n */\n _this.panning_ = false;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : defaultCondition;\n /**\n * @private\n * @type {boolean}\n */\n _this.noKinetic_ = false;\n return _this;\n }\n /**\n * @private\n * @param {import(\"../MapBrowserEvent\").default} mapBrowserEvent Event.\n * @return {boolean} Condition passes.\n */\n DragPan.prototype.conditionInternal_ = function (mapBrowserEvent) {\n var pass = true;\n if (mapBrowserEvent.map.getTargetElement().hasAttribute('tabindex')) {\n pass = focus(mapBrowserEvent);\n }\n return pass && this.condition_(mapBrowserEvent);\n };\n /**\n * @inheritDoc\n */\n DragPan.prototype.handleDragEvent = function (mapBrowserEvent) {\n if (!this.panning_) {\n this.panning_ = true;\n this.getMap().getView().beginInteraction();\n }\n var targetPointers = this.targetPointers;\n var centroid = centroidFromPointers(targetPointers);\n if (targetPointers.length == this.lastPointersCount_) {\n if (this.kinetic_) {\n this.kinetic_.update(centroid[0], centroid[1]);\n }\n if (this.lastCentroid) {\n var delta = [\n this.lastCentroid[0] - centroid[0],\n centroid[1] - this.lastCentroid[1]\n ];\n var map = mapBrowserEvent.map;\n var view = map.getView();\n scaleCoordinate(delta, view.getResolution());\n rotateCoordinate(delta, view.getRotation());\n view.adjustCenterInternal(delta);\n }\n }\n else if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger down, tiny drag, second finger down\n this.kinetic_.begin();\n }\n this.lastCentroid = centroid;\n this.lastPointersCount_ = targetPointers.length;\n mapBrowserEvent.originalEvent.preventDefault();\n };\n /**\n * @inheritDoc\n */\n DragPan.prototype.handleUpEvent = function (mapBrowserEvent) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (this.targetPointers.length === 0) {\n if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {\n var distance = this.kinetic_.getDistance();\n var angle = this.kinetic_.getAngle();\n var center = view.getCenterInternal();\n var centerpx = map.getPixelFromCoordinateInternal(center);\n var dest = map.getCoordinateFromPixelInternal([\n centerpx[0] - distance * Math.cos(angle),\n centerpx[1] - distance * Math.sin(angle)\n ]);\n view.animateInternal({\n center: view.getConstrainedCenter(dest),\n duration: 500,\n easing: easeOut\n });\n }\n if (this.panning_) {\n this.panning_ = false;\n view.endInteraction();\n }\n return false;\n }\n else {\n if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger up, tiny drag, second finger up\n this.kinetic_.begin();\n }\n this.lastCentroid = null;\n return true;\n }\n };\n /**\n * @inheritDoc\n */\n DragPan.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length > 0 && this.conditionInternal_(mapBrowserEvent)) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n this.lastCentroid = null;\n // stop any current animation\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n if (this.kinetic_) {\n this.kinetic_.begin();\n }\n // No kinetic as soon as more than one pointer on the screen is\n // detected. This is to prevent nasty pans after pinch.\n this.noKinetic_ = this.targetPointers.length > 1;\n return true;\n }\n else {\n return false;\n }\n };\n return DragPan;\n}(PointerInteraction));\n/**\n * @param {import(\"../MapBrowserPointerEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\nfunction defaultCondition(mapBrowserEvent) {\n return noModifierKeys(mapBrowserEvent) && primaryAction(mapBrowserEvent);\n}\nexport default DragPan;\n//# sourceMappingURL=DragPan.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragRotate\n */\nimport { disable } from '../rotationconstraint.js';\nimport { altShiftKeysOnly, mouseOnly, mouseActionButton } from '../events/condition.js';\nimport { FALSE } from '../functions.js';\nimport PointerInteraction from './Pointer.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition~altShiftKeysOnly}.\n * @property {number} [duration=250] Animation duration in milliseconds.\n */\n/**\n * @classdesc\n * Allows the user to rotate the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the alt and shift keys are held down.\n *\n * This interaction is only supported for mouse devices.\n * @api\n */\nvar DragRotate = /** @class */ (function (_super) {\n __extends(DragRotate, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragRotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n stopDown: FALSE\n }) || this;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : altShiftKeysOnly;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastAngle_ = undefined;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @inheritDoc\n */\n DragRotate.prototype.handleDragEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return;\n }\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n var size = map.getSize();\n var offset = mapBrowserEvent.pixel;\n var theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);\n if (this.lastAngle_ !== undefined) {\n var delta = theta - this.lastAngle_;\n view.adjustRotationInternal(-delta);\n }\n this.lastAngle_ = theta;\n };\n /**\n * @inheritDoc\n */\n DragRotate.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return true;\n }\n var map = mapBrowserEvent.map;\n var view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n };\n /**\n * @inheritDoc\n */\n DragRotate.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return false;\n }\n if (mouseActionButton(mapBrowserEvent) && this.condition_(mapBrowserEvent)) {\n var map = mapBrowserEvent.map;\n map.getView().beginInteraction();\n this.lastAngle_ = undefined;\n return true;\n }\n else {\n return false;\n }\n };\n return DragRotate;\n}(PointerInteraction));\nexport default DragRotate;\n//# sourceMappingURL=DragRotate.js.map","/**\n * @module ol/events/KeyCode\n */\n/**\n * @enum {number}\n * @const\n */\nexport default {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n//# sourceMappingURL=KeyCode.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/KeyboardPan\n */\nimport { rotate as rotateCoordinate } from '../coordinate.js';\nimport EventType from '../events/EventType.js';\nimport KeyCode from '../events/KeyCode.js';\nimport { noModifierKeys, targetNotEditable } from '../events/condition.js';\nimport Interaction, { pan } from './Interaction.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition~noModifierKeys} and\n * {@link module:ol/events/condition~targetNotEditable}.\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {number} [pixelDelta=128] The amount of pixels to pan on each key\n * press.\n */\n/**\n * @classdesc\n * Allows the user to pan the map using keyboard arrows.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.\n * @api\n */\nvar KeyboardPan = /** @class */ (function (_super) {\n __extends(KeyboardPan, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function KeyboardPan(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options || {};\n /**\n * @private\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\n _this.defaultCondition_ = function (mapBrowserEvent) {\n return noModifierKeys(mapBrowserEvent) &&\n targetNotEditable(mapBrowserEvent);\n };\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition !== undefined ?\n options.condition : _this.defaultCondition_;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 100;\n /**\n * @private\n * @type {number}\n */\n _this.pixelDelta_ = options.pixelDelta !== undefined ?\n options.pixelDelta : 128;\n return _this;\n }\n return KeyboardPan;\n}(Interaction));\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides the direction to pan to (if an arrow key was\n * pressed).\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {KeyboardPan}\n */\nfunction handleEvent(mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN) {\n var keyEvent = /** @type {KeyboardEvent} */ (mapBrowserEvent.originalEvent);\n var keyCode = keyEvent.keyCode;\n if (this.condition_(mapBrowserEvent) &&\n (keyCode == KeyCode.DOWN ||\n keyCode == KeyCode.LEFT ||\n keyCode == KeyCode.RIGHT ||\n keyCode == KeyCode.UP)) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n var mapUnitsDelta = view.getResolution() * this.pixelDelta_;\n var deltaX = 0, deltaY = 0;\n if (keyCode == KeyCode.DOWN) {\n deltaY = -mapUnitsDelta;\n }\n else if (keyCode == KeyCode.LEFT) {\n deltaX = -mapUnitsDelta;\n }\n else if (keyCode == KeyCode.RIGHT) {\n deltaX = mapUnitsDelta;\n }\n else {\n deltaY = mapUnitsDelta;\n }\n var delta = [deltaX, deltaY];\n rotateCoordinate(delta, view.getRotation());\n pan(view, delta, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n}\nexport default KeyboardPan;\n//# sourceMappingURL=KeyboardPan.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/PinchRotate\n */\nimport { FALSE } from '../functions.js';\nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';\nimport { disable } from '../rotationconstraint.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] The duration of the animation in\n * milliseconds.\n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.\n */\n/**\n * @classdesc\n * Allows the user to rotate the map by twisting with two fingers\n * on a touch screen.\n * @api\n */\nvar PinchRotate = /** @class */ (function (_super) {\n __extends(PinchRotate, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function PinchRotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.anchor_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastAngle_ = undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.rotating_ = false;\n /**\n * @private\n * @type {number}\n */\n _this.rotationDelta_ = 0.0;\n /**\n * @private\n * @type {number}\n */\n _this.threshold_ = options.threshold !== undefined ? options.threshold : 0.3;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @inheritDoc\n */\n PinchRotate.prototype.handleDragEvent = function (mapBrowserEvent) {\n var rotationDelta = 0.0;\n var touch0 = this.targetPointers[0];\n var touch1 = this.targetPointers[1];\n // angle between touches\n var angle = Math.atan2(touch1.clientY - touch0.clientY, touch1.clientX - touch0.clientX);\n if (this.lastAngle_ !== undefined) {\n var delta = angle - this.lastAngle_;\n this.rotationDelta_ += delta;\n if (!this.rotating_ &&\n Math.abs(this.rotationDelta_) > this.threshold_) {\n this.rotating_ = true;\n }\n rotationDelta = delta;\n }\n this.lastAngle_ = angle;\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n // rotate anchor point.\n // FIXME: should be the intersection point between the lines:\n // touch0,touch1 and previousTouch0,previousTouch1\n var viewportPosition = map.getViewport().getBoundingClientRect();\n var centroid = centroidFromPointers(this.targetPointers);\n centroid[0] -= viewportPosition.left;\n centroid[1] -= viewportPosition.top;\n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);\n // rotate\n if (this.rotating_) {\n map.render();\n view.adjustRotationInternal(rotationDelta, this.anchor_);\n }\n };\n /**\n * @inheritDoc\n */\n PinchRotate.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * @inheritDoc\n */\n PinchRotate.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n var map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastAngle_ = undefined;\n this.rotating_ = false;\n this.rotationDelta_ = 0.0;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n else {\n return false;\n }\n };\n return PinchRotate;\n}(PointerInteraction));\nexport default PinchRotate;\n//# sourceMappingURL=PinchRotate.js.map","/**\n * @module ol/interaction\n */\nimport Collection from './Collection.js';\nimport Kinetic from './Kinetic.js';\nimport DoubleClickZoom from './interaction/DoubleClickZoom.js';\nimport DragPan from './interaction/DragPan.js';\nimport DragRotate from './interaction/DragRotate.js';\nimport DragZoom from './interaction/DragZoom.js';\nimport KeyboardPan from './interaction/KeyboardPan.js';\nimport KeyboardZoom from './interaction/KeyboardZoom.js';\nimport MouseWheelZoom from './interaction/MouseWheelZoom.js';\nimport PinchRotate from './interaction/PinchRotate.js';\nimport PinchZoom from './interaction/PinchZoom.js';\nimport { focus } from './events/condition.js';\nexport { default as DoubleClickZoom } from './interaction/DoubleClickZoom.js';\nexport { default as DragAndDrop } from './interaction/DragAndDrop.js';\nexport { default as DragBox } from './interaction/DragBox.js';\nexport { default as DragPan } from './interaction/DragPan.js';\nexport { default as DragRotate } from './interaction/DragRotate.js';\nexport { default as DragRotateAndZoom } from './interaction/DragRotateAndZoom.js';\nexport { default as DragZoom } from './interaction/DragZoom.js';\nexport { default as Draw } from './interaction/Draw.js';\nexport { default as Extent } from './interaction/Extent.js';\nexport { default as Interaction } from './interaction/Interaction.js';\nexport { default as KeyboardPan } from './interaction/KeyboardPan.js';\nexport { default as KeyboardZoom } from './interaction/KeyboardZoom.js';\nexport { default as Modify } from './interaction/Modify.js';\nexport { default as MouseWheelZoom } from './interaction/MouseWheelZoom.js';\nexport { default as PinchRotate } from './interaction/PinchRotate.js';\nexport { default as PinchZoom } from './interaction/PinchZoom.js';\nexport { default as Pointer } from './interaction/Pointer.js';\nexport { default as Select } from './interaction/Select.js';\nexport { default as Snap } from './interaction/Snap.js';\nexport { default as Translate } from './interaction/Translate.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate is\n * desired.\n * @property {boolean} [onFocusOnly=false] Interact only when the map has the\n * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and is\n * useful when page scroll is desired for maps that do not have the browser's\n * focus.\n * @property {boolean} [doubleClickZoom=true] Whether double click zoom is\n * desired.\n * @property {boolean} [keyboard=true] Whether keyboard interaction is desired.\n * @property {boolean} [mouseWheelZoom=true] Whether mousewheel zoom is desired.\n * @property {boolean} [shiftDragZoom=true] Whether Shift-drag zoom is desired.\n * @property {boolean} [dragPan=true] Whether drag pan is desired.\n * @property {boolean} [pinchRotate=true] Whether pinch rotate is desired.\n * @property {boolean} [pinchZoom=true] Whether pinch zoom is desired.\n * @property {number} [zoomDelta] Zoom level delta when using keyboard or double click zoom.\n * @property {number} [zoomDuration] Duration of the zoom animation in\n * milliseconds.\n */\n/**\n * Set of interactions included in maps by default. Specific interactions can be\n * excluded by setting the appropriate option to false in the constructor\n * options, but the order of the interactions is fixed. If you want to specify\n * a different order for interactions, you will need to create your own\n * {@link module:ol/interaction/Interaction} instances and insert\n * them into a {@link module:ol/Collection} in the order you want\n * before creating your {@link module:ol/Map~Map} instance. Changing the order can\n * be of interest if the event propagation needs to be stopped at a point.\n * The default set of interactions, in sequence, is:\n * * {@link module:ol/interaction/DragRotate~DragRotate}\n * * {@link module:ol/interaction/DoubleClickZoom~DoubleClickZoom}\n * * {@link module:ol/interaction/DragPan~DragPan}\n * * {@link module:ol/interaction/PinchRotate~PinchRotate}\n * * {@link module:ol/interaction/PinchZoom~PinchZoom}\n * * {@link module:ol/interaction/KeyboardPan~KeyboardPan}\n * * {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}\n * * {@link module:ol/interaction/MouseWheelZoom~MouseWheelZoom}\n * * {@link module:ol/interaction/DragZoom~DragZoom}\n *\n * @param {DefaultsOptions=} opt_options Defaults options.\n * @return {import(\"./Collection.js\").default}\n * A collection of interactions to be used with the {@link module:ol/Map~Map}\n * constructor's `interactions` option.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var interactions = new Collection();\n var kinetic = new Kinetic(-0.005, 0.05, 100);\n var altShiftDragRotate = options.altShiftDragRotate !== undefined ?\n options.altShiftDragRotate : true;\n if (altShiftDragRotate) {\n interactions.push(new DragRotate());\n }\n var doubleClickZoom = options.doubleClickZoom !== undefined ?\n options.doubleClickZoom : true;\n if (doubleClickZoom) {\n interactions.push(new DoubleClickZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration\n }));\n }\n var dragPan = options.dragPan !== undefined ? options.dragPan : true;\n if (dragPan) {\n interactions.push(new DragPan({\n condition: options.onFocusOnly ? focus : undefined,\n kinetic: kinetic\n }));\n }\n var pinchRotate = options.pinchRotate !== undefined ? options.pinchRotate :\n true;\n if (pinchRotate) {\n interactions.push(new PinchRotate());\n }\n var pinchZoom = options.pinchZoom !== undefined ? options.pinchZoom : true;\n if (pinchZoom) {\n interactions.push(new PinchZoom({\n duration: options.zoomDuration\n }));\n }\n var keyboard = options.keyboard !== undefined ? options.keyboard : true;\n if (keyboard) {\n interactions.push(new KeyboardPan());\n interactions.push(new KeyboardZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration\n }));\n }\n var mouseWheelZoom = options.mouseWheelZoom !== undefined ?\n options.mouseWheelZoom : true;\n if (mouseWheelZoom) {\n interactions.push(new MouseWheelZoom({\n condition: options.onFocusOnly ? focus : undefined,\n duration: options.zoomDuration\n }));\n }\n var shiftDragZoom = options.shiftDragZoom !== undefined ?\n options.shiftDragZoom : true;\n if (shiftDragZoom) {\n interactions.push(new DragZoom({\n duration: options.zoomDuration\n }));\n }\n return interactions;\n}\n//# sourceMappingURL=interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Map\n */\nimport PluggableMap from './PluggableMap.js';\nimport { defaults as defaultControls } from './control.js';\nimport { defaults as defaultInteractions } from './interaction.js';\nimport { assign } from './obj.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n * import Map from 'ol/Map';\n * import View from 'ol/View';\n * import TileLayer from 'ol/layer/Tile';\n * import OSM from 'ol/source/OSM';\n *\n * var map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1\n * }),\n * layers: [\n * new TileLayer({\n * source: new OSM()\n * })\n * ],\n * target: 'map'\n * });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~Group}\n * is a subclass of {@link module:ol/layer/Base}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @api\n */\nvar Map = /** @class */ (function (_super) {\n __extends(Map, _super);\n /**\n * @param {import(\"./PluggableMap.js\").MapOptions} options Map options.\n */\n function Map(options) {\n var _this = this;\n options = assign({}, options);\n if (!options.controls) {\n options.controls = defaultControls();\n }\n if (!options.interactions) {\n options.interactions = defaultInteractions();\n }\n _this = _super.call(this, options) || this;\n return _this;\n }\n Map.prototype.createRenderer = function () {\n return new CompositeMapRenderer(this);\n };\n return Map;\n}(PluggableMap));\nexport default Map;\n//# sourceMappingURL=Map.js.map","export default function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n ft: {to_meter: 0.3048},\n 'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n if (obj[key]) {\n return obj[key];\n }\n var keys = Object.keys(obj);\n var lkey = key.toLowerCase().replace(ignoredChar, '');\n var i = -1;\n var testkey, processedKey;\n while (++i < keys.length) {\n testkey = keys[i];\n processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n if (processedKey === lkey) {\n return obj[testkey];\n }\n }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n var self = {};\n var paramObj = defData.split('+').map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).reduce(function(p, a) {\n var split = a.split('=');\n split.push(true);\n p[split[0].toLowerCase()] = split[1];\n return p;\n }, {});\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n var unit = match(units, v);\n if (unit) {\n self.to_meter = unit.to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n var pm = match(PrimeMeridian, v);\n self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n if (typeof text !== 'string') {\n throw new Error('not a string');\n }\n this.text = text.trim();\n this.level = 0;\n this.place = 0;\n this.root = null;\n this.stack = [];\n this.currentObject = null;\n this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n var char = this.text[this.place++];\n if (this.state !== QUOTED) {\n while (whitespace.test(char)) {\n if (this.place >= this.text.length) {\n return;\n }\n char = this.text[this.place++];\n }\n }\n switch (this.state) {\n case NEUTRAL:\n return this.neutral(char);\n case KEYWORD:\n return this.keyword(char)\n case QUOTED:\n return this.quoted(char);\n case AFTERQUOTE:\n return this.afterquote(char);\n case NUMBER:\n return this.number(char);\n case ENDED:\n return;\n }\n};\nParser.prototype.afterquote = function(char) {\n if (char === '\"') {\n this.word += '\"';\n this.state = QUOTED;\n return;\n }\n if (endThings.test(char)) {\n this.word = this.word.trim();\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n if (char === ',') {\n if (this.word !== null) {\n this.currentObject.push(this.word);\n }\n this.word = null;\n this.state = NEUTRAL;\n return;\n }\n if (char === ']') {\n this.level--;\n if (this.word !== null) {\n this.currentObject.push(this.word);\n this.word = null;\n }\n this.state = NEUTRAL;\n this.currentObject = this.stack.pop();\n if (!this.currentObject) {\n this.state = ENDED;\n }\n\n return;\n }\n};\nParser.prototype.number = function(char) {\n if (digets.test(char)) {\n this.word += char;\n return;\n }\n if (endThings.test(char)) {\n this.word = parseFloat(this.word);\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n if (char === '\"') {\n this.state = AFTERQUOTE;\n return;\n }\n this.word += char;\n return;\n};\nParser.prototype.keyword = function(char) {\n if (keyword.test(char)) {\n this.word += char;\n return;\n }\n if (char === '[') {\n var newObjects = [];\n newObjects.push(this.word);\n this.level++;\n if (this.root === null) {\n this.root = newObjects;\n } else {\n this.currentObject.push(newObjects);\n }\n this.stack.push(this.currentObject);\n this.currentObject = newObjects;\n this.state = NEUTRAL;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n if (latin.test(char)) {\n this.word = char;\n this.state = KEYWORD;\n return;\n }\n if (char === '\"') {\n this.word = '';\n this.state = QUOTED;\n return;\n }\n if (digets.test(char)) {\n this.word = char;\n this.state = NUMBER;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n while (this.place < this.text.length) {\n this.readCharicter();\n }\n if (this.state === ENDED) {\n return this.root;\n }\n throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n var parser = new Parser(txt);\n return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n if (Array.isArray(key)) {\n value.unshift(key);\n key = null;\n }\n var thing = key ? {} : obj;\n\n var out = value.reduce(function(newObj, item) {\n sExpr(item, newObj);\n return newObj\n }, thing);\n if (key) {\n obj[key] = out;\n }\n}\n\nexport function sExpr(v, obj) {\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n var key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n return;\n }\n obj[key] = v[0];\n return;\n }\n if (!v.length) {\n obj[key] = true;\n return;\n }\n if (key === 'TOWGS84') {\n obj[key] = v;\n return;\n }\n if (key === 'AXIS') {\n if (!(key in obj)) {\n obj[key] = [];\n }\n obj[key].push(v);\n return;\n }\n if (!Array.isArray(key)) {\n obj[key] = {};\n }\n\n var i;\n switch (key) {\n case 'UNIT':\n case 'PRIMEM':\n case 'VERT_DATUM':\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n sExpr(v[2], obj[key]);\n }\n return;\n case 'SPHEROID':\n case 'ELLIPSOID':\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n sExpr(v[3], obj[key]);\n }\n return;\n case 'PROJECTEDCRS':\n case 'PROJCRS':\n case 'GEOGCS':\n case 'GEOCCS':\n case 'PROJCS':\n case 'LOCAL_CS':\n case 'GEODCRS':\n case 'GEODETICCRS':\n case 'GEODETICDATUM':\n case 'EDATUM':\n case 'ENGINEERINGDATUM':\n case 'VERT_CS':\n case 'VERTCRS':\n case 'VERTICALCRS':\n case 'COMPD_CS':\n case 'COMPOUNDCRS':\n case 'ENGINEERINGCRS':\n case 'ENGCRS':\n case 'FITTED_CS':\n case 'LOCAL_DATUM':\n case 'DATUM':\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n return;\n default:\n i = -1;\n while (++i < v.length) {\n if (!Array.isArray(v[i])) {\n return sExpr(v, obj[key]);\n }\n }\n return mapit(obj, key, v);\n }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n } else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n } else {\n if (typeof wkt.PROJECTION === 'object') {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n } else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.AXIS) {\n var axisOrder = '';\n for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n var axis = wkt.AXIS[i];\n var descriptor = axis[0].toLowerCase();\n if (descriptor.indexOf('north') !== -1) {\n axisOrder += 'n';\n } else if (descriptor.indexOf('south') !== -1) {\n axisOrder += 's';\n } else if (descriptor.indexOf('east') !== -1) {\n axisOrder += 'e';\n } else if (descriptor.indexOf('west') !== -1) {\n axisOrder += 'w';\n }\n }\n if (axisOrder.length === 2) {\n axisOrder += 'u';\n }\n if (axisOrder.length === 3) {\n wkt.axis = axisOrder;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n if (wkt.type === 'GEOGCS') {\n if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n }\n } else {\n wkt.to_meter = wkt.UNIT.convert;\n }\n }\n }\n var geogcs = wkt.GEOGCS;\n if (wkt.type === 'GEOGCS') {\n geogcs = wkt;\n }\n if (geogcs) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (geogcs.DATUM) {\n wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n } else {\n wkt.datumCode = geogcs.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = 'rnb72';\n }\n if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n wkt.ellps = 'intl';\n }\n\n wkt.a = geogcs.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n }\n\n if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n wkt.datum_params = geogcs.DATUM.TOWGS84;\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = 'osgb36';\n }\n if (~wkt.datumCode.indexOf('osni_1952')) {\n wkt.datumCode = 'osni52';\n }\n if (~wkt.datumCode.indexOf('tm65')\n || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n wkt.datumCode = 'ire65';\n }\n if (wkt.datumCode === 'ch1903+') {\n wkt.datumCode = 'ch1903';\n }\n if (~wkt.datumCode.indexOf('israel')) {\n wkt.datumCode = 'isr93';\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return input * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['false_easting', 'False_Easting'],\n ['false_northing', 'False_Northing'],\n ['central_meridian', 'Central_Meridian'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_Of_Center'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longitude_of_center', 'Longitude_of_center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['azimuth', 'Azimuth'],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n }\n}\nexport default function(wkt) {\n var lisp = parser(wkt);\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj);\n return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nexport default defs;\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\n var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n return codeWords.some(function (word) {\n return code.indexOf(word) > -1;\n });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n var auth = match(item, 'authority');\n if (!auth) {\n return;\n }\n var code = match(auth, 'epsg');\n return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n var ext = match(item, 'extension');\n if (!ext) {\n return;\n }\n return match(ext, 'proj4');\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n if (testWKT(code)) {\n var out = wkt(code);\n // test of spetial case, due to this being a very common and often malformed\n if (checkMercator(out)) {\n return defs['EPSG:3857'];\n }\n var maybeProjStr = checkProjStr(out);\n if (maybeProjStr) {\n return projStr(maybeProjStr);\n }\n return out;\n }\n if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nexport default parse;\n","export default function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n}\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexport function inverse(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export function init() {\n //no-op for longlat\n}\n\nfunction identity(pt) {\n return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n init: init,\n forward: identity,\n inverse: identity,\n names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexport {add};\n\nexport function get(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n}\n\nexport function start() {\n projs.forEach(add);\n}\nexport default {\n start: start,\n add: add,\n get: get\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\n\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n var a2 = a * a; // used in geocentric\n var b2 = b * b; // used in geocentric\n var es = (a2 - b2) / a2; // e ^ 2\n var e = 0;\n if (R_A) {\n a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n a2 = a * a;\n es = 0;\n } else {\n e = Math.sqrt(es); // eccentricity\n }\n var ep2 = (a2 - b2) / b2; // used in geocentric\n return {\n es: es,\n e: e,\n ep2: ep2\n };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n if (!a) { // do we have an ellipsoid?\n var ellipse = match(Ellipsoid, ellps);\n if (!ellipse) {\n ellipse = WGS84;\n }\n a = ellipse.a;\n b = ellipse.b;\n rf = ellipse.rf;\n }\n\n if (rf && !b) {\n b = (1.0 - 1.0 / rf) * a;\n }\n if (rf === 0 || Math.abs(a - b) < EPSLN) {\n sphere = true;\n b = a;\n }\n return {\n a: a,\n b: b,\n rf: rf,\n sphere: sphere\n };\n}\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n towgs84: \"606.0,23.0,413.0\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n towgs84: \"653.0,-212.0,449.0\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"airy\",\n datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};\n","import {PJD_3PARAM, PJD_7PARAM, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2) {\n var out = {};\n\n if (datumCode === undefined || datumCode === 'none') {\n out.datum_type = PJD_NODATUM;\n } else {\n out.datum_type = PJD_WGS84;\n }\n\n if (datum_params) {\n out.datum_params = datum_params.map(parseFloat);\n if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n out.datum_type = PJD_3PARAM;\n }\n if (out.datum_params.length > 3) {\n if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n out.datum_type = PJD_7PARAM;\n out.datum_params[3] *= SEC_TO_RAD;\n out.datum_params[4] *= SEC_TO_RAD;\n out.datum_params[5] *= SEC_TO_RAD;\n out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n\n out.a = a; //datum object also uses these values\n out.b = b;\n out.es = es;\n out.ep2 = ep2;\n return out;\n}\n\nexport default datum;\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var ourProj = Projection.projections.get(json.projName);\n if(!ourProj){\n callback(srsCode);\n return;\n }\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = match(Datum, json.datumCode);\n if (datumDef) {\n json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n json.k0 = json.k0 || 1.0;\n json.axis = json.axis || 'enu';\n json.ellps = json.ellps || 'wgs84';\n var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2);\n\n extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n extend(this, ourProj); // transfer all the methods from the projection\n\n // copy the 4 things over we calulated in deriveConstants.sphere\n this.a = sphere_.a;\n this.b = sphere_.b;\n this.rf = sphere_.rf;\n this.sphere = sphere_.sphere;\n\n // copy the 3 things we calculated in deriveConstants.eccentricity\n this.es = ecc.es;\n this.e = ecc.e;\n this.ep2 = ecc.ep2;\n\n // add in the datum object\n this.datum = datumObj;\n\n // init the projection\n this.init();\n\n // legecy callback from back in the day when it went to spatialreference.org\n callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n if (source.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n // the tolerance for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n } else if (source.datum_type === PJD_3PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n } else if (source.datum_type === PJD_7PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n } else {\n return true; // datums are equal\n }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n } else if (Latitude < -HALF_PI) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return { x: -Infinity, y: -Infinity, z: p.z };\n } else if (Latitude > HALF_PI) {\n /* Latitude out of range */\n return { x: Infinity, y: Infinity, z: p.z };\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n return {\n x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n z: ((Rn * (1 - es)) + Height) * Sin_Lat\n };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / a < genau) {\n Latitude = HALF_PI;\n Height = -b;\n return {\n x: p.x,\n y: p.y,\n z: p.z\n };\n }\n } else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n CPHI0 = ST * (1.0 - es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n RK = es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n return {\n x: Longitude,\n y: Latitude,\n z: Height\n };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n// p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x + datum_params[0],\n y: p.y + datum_params[1],\n z: p.z + datum_params[2],\n };\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n };\n }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n// coordinate system definition,\n// point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x - datum_params[0],\n y: p.y - datum_params[1],\n z: p.z - datum_params[2],\n };\n\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n return {\n x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n };\n } //cs_geocentric_from_wgs84()\n}\n","import {PJD_3PARAM, PJD_7PARAM, PJD_NODATUM} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nfunction checkParams(type) {\n return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n // Short cut if the datums are identical.\n if (compareDatums(source, dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n\n // Do we need to go through geocentric coordinates?\n if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {\n return point;\n }\n\n // Convert to geocentric coordinates.\n point = geodeticToGeocentric(point, source.es, source.a);\n // Convert between datums\n if (checkParams(source.datum_type)) {\n point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n }\n if (checkParams(dest.datum_type)) {\n point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n }\n return geocentricToGeodetic(point, dest.es, dest.a, dest.b);\n\n}\n","export default function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n var out = {};\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n t = 'x';\n } else {\n t = 'y';\n }\n\n }\n else if (i === 1) {\n v = yin;\n if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n t = 'y';\n } else {\n t = 'x';\n }\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n case 'w':\n case 'n':\n case 's':\n out[t] = v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n out.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n out.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return out;\n}\n","export default function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n}","export default function (point) {\n checkCoord(point.x);\n checkCoord(point.y);\n}\nfunction checkCoord(num) {\n if (typeof Number.isFinite === 'function') {\n if (Number.isFinite(num)) {\n return;\n }\n throw new TypeError('coordinates must be finite numbers');\n }\n if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n throw new TypeError('coordinates must be finite numbers');\n }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n }\n checkSanity(point);\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n wgs84 = new proj('WGS84');\n point = transform(source, wgs84, point);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (source.axis !== 'enu') {\n point = adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === 'longlat') {\n point = {\n x: point.x * D2R,\n y: point.y * D2R,\n z: point.z || 0\n };\n } else {\n if (source.to_meter) {\n point = {\n x: point.x * source.to_meter,\n y: point.y * source.to_meter,\n z: point.z || 0\n };\n }\n point = source.inverse(point); // Convert Cartesian to longlat\n if (!point) {\n return;\n }\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point = {\n x: point.x - dest.from_greenwich,\n y: point.y,\n z: point.z || 0\n };\n }\n\n if (dest.projName === 'longlat') {\n // convert radians to decimal degrees\n point = {\n x: point.x * R2D,\n y: point.y * R2D,\n z: point.z || 0\n };\n } else { // else project\n point = dest.forward(point);\n if (dest.to_meter) {\n point = {\n x: point.x / dest.to_meter,\n y: point.y / dest.to_meter,\n z: point.z || 0\n };\n }\n }\n\n // DGR, 2010/11/12\n if (dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords) || {x: NaN, y: NaN};\n if (coords.length > 2) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (typeof transformedArray.z === 'number') {\n return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));\n } else {\n return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));\n }\n } else {\n return [transformedArray.x, transformedArray.y].concat(coords.splice(2));\n }\n } else {\n return [transformedArray.x, transformedArray.y];\n }\n } else {\n out = transform(from, to, coords);\n keys = Object.keys(coords);\n if (keys.length === 2) {\n return out;\n }\n keys.forEach(function (key) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (key === 'x' || key === 'y' || key === 'z') {\n return;\n }\n } else {\n if (key === 'x' || key === 'y') {\n return;\n }\n }\n out[key] = coords[key];\n });\n return out;\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n } else {\n obj = {\n forward: function (coords) {\n return transformer(fromProj, toProj, coords);\n },\n inverse: function (coords) {\n return transformer(toProj, fromProj, coords);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n forward: forward,\n inverse: inverse,\n toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n }\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat];\n }\n return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n // prepend with leading zeroes\n var seasting = \"00000\" + utm.easting,\n snorthing = \"00000\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n } else if(typeof x === 'object') {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n } else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n}","export default function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n if (this.es) {\n this.en = pj_enfn(this.es);\n this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n }\n}\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (!this.es) {\n var b = cos_phi * Math.sin(delta_lon);\n\n if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n b = Math.abs(y);\n\n if (b >= 1) {\n if ((b - 1) > EPSLN) {\n return (93);\n }\n else {\n y = 0;\n }\n }\n else {\n y = Math.acos(y);\n }\n\n if (lat < 0) {\n y = -y;\n }\n\n y = this.a * this.k0 * (y - this.lat0) + this.y0;\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n var t = Math.pow(tq, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n al = al / Math.sqrt(con);\n var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n x = this.a * (this.k0 * al * (1 +\n als / 6 * (1 - t + c +\n als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n this.x0;\n\n y = this.a * (this.k0 * (ml - this.ml0 +\n sin_phi * delta_lon * al / 2 * (1 +\n als / 12 * (5 - t + 9 * c + 4 * cs +\n als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n this.y0;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var con, phi;\n var lat, lon;\n var x = (p.x - this.x0) * (1 / this.a);\n var y = (p.y - this.y0) * (1 / this.a);\n\n if (!this.es) {\n var f = Math.exp(x / this.k0);\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + y / this.k0;\n var h = Math.cos(temp);\n con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n lat = Math.asin(con);\n\n if (y < 0) {\n lat = -lat;\n }\n\n if ((g === 0) && (h === 0)) {\n lon = 0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n con = this.ml0 + y / this.k0;\n phi = pj_inv_mlfn(con, this.es, this.en);\n\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var d = x * Math.sqrt(con) / this.k0;\n var ds = Math.pow(d, 2);\n con = con * tan_phi;\n\n lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n lon = adjust_lon(this.long0 + (d * (1 -\n ds / 6 * (1 + 2 * t + c -\n ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = 0;\n }\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(x) {\n var r = Math.exp(x);\n r = (r - 1 / r) / 2;\n return r;\n}","export default function(x, y) {\n x = Math.abs(x);\n y = Math.abs(y);\n var a = Math.max(x, y);\n var b = Math.min(x, y) / (a ? a : 1);\n\n return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","export default function(x) {\n var y = 1 + x;\n var z = y - 1;\n\n return z === 0 ? x : x * Math.log(y) / z;\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n var y = Math.abs(x);\n y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n return x < 0 ? -y : y;\n}\n","export default function(pp, B) {\n var cos_2B = 2 * Math.cos(2 * B);\n var i = pp.length - 1;\n var h1 = pp[i];\n var h2 = 0;\n var h;\n\n while (--i >= 0) {\n h = -h2 + cos_2B * h1 + pp[i];\n h2 = h1;\n h1 = h;\n }\n\n return (B + h * Math.sin(2 * B));\n}\n","export default function(pp, arg_r) {\n var r = 2 * Math.cos(arg_r);\n var i = pp.length - 1;\n var hr1 = pp[i];\n var hr2 = 0;\n var hr;\n\n while (--i >= 0) {\n hr = -hr2 + r * hr1 + pp[i];\n hr2 = hr1;\n hr1 = hr;\n }\n\n return Math.sin(arg_r) * hr;\n}\n","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n var sin_arg_r = Math.sin(arg_r);\n var cos_arg_r = Math.cos(arg_r);\n var sinh_arg_i = sinh(arg_i);\n var cosh_arg_i = cosh(arg_i);\n var r = 2 * cos_arg_r * cosh_arg_i;\n var i = -2 * sin_arg_r * sinh_arg_i;\n var j = pp.length - 1;\n var hr = pp[j];\n var hi1 = 0;\n var hr1 = 0;\n var hi = 0;\n var hr2;\n var hi2;\n\n while (--j >= 0) {\n hr2 = hr1;\n hi2 = hi1;\n hr1 = hr;\n hi1 = hi;\n hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n hi = -hi2 + i * hr1 + r * hi1;\n }\n\n r = sin_arg_r * cosh_arg_i;\n i = cos_arg_r * sinh_arg_i;\n\n return [r * hr - i * hi, r * hi + i * hr];\n}\n","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n if (this.es === undefined || this.es <= 0) {\n throw new Error('incorrect elliptical usage');\n }\n\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n this.cgb = [];\n this.cbg = [];\n this.utg = [];\n this.gtu = [];\n\n var f = this.es / (1 + Math.sqrt(1 - this.es));\n var n = f / (2 - f);\n var np = n;\n\n this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n np = np * n;\n this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n np = np * n;\n this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n np = np * n;\n this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n np = np * n;\n this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n np = np * n;\n this.cgb[5] = np * (601676 / 22275);\n this.cbg[5] = np * (444337 / 155925);\n\n np = Math.pow(n, 2);\n this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n np = np * n;\n this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n np = np * n;\n this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n np = np * n;\n this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n np = np * n;\n this.utg[5] = np * (-20648693 / 638668800);\n this.gtu[5] = np * (212378941 / 319334400);\n\n var Z = gatg(this.cbg, this.lat0);\n this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n var Ce = adjust_lon(p.x - this.long0);\n var Cn = p.y;\n\n Cn = gatg(this.cbg, Cn);\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n Ce = asinhy(Math.tan(Ce));\n\n var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n\n var x;\n var y;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n x = this.a * (this.Qn * Ce) + this.x0;\n y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n }\n else {\n x = Infinity;\n y = Infinity;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\nexport function inverse(p) {\n var Ce = (p.x - this.x0) * (1 / this.a);\n var Cn = (p.y - this.y0) * (1 / this.a);\n\n Cn = (Cn - this.Zb) / this.Qn;\n Ce = Ce / this.Qn;\n\n var lon;\n var lat;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n Ce = Math.atan(sinh(Ce));\n\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n lon = adjust_lon(Ce + this.long0);\n lat = gatg(this.cgb, Cn);\n }\n else {\n lon = Infinity;\n lat = Infinity;\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n if (zone === undefined) {\n zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n if (zone < 0) {\n return 0;\n } else if (zone > 60) {\n return 60;\n }\n }\n return zone;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n var zone = adjust_zone(this.zone, this.long0);\n if (zone === undefined) {\n throw new Error('unknown utm zone');\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n etmerc.init.apply(this);\n this.forward = etmerc.forward;\n this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n init: init,\n names: names,\n dependsOn: dependsOn\n};\n","export default function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n}\n\nexport function inverse(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n}\n\nexport function forward(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n}\n\nexport function inverse(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n ssfn_: ssfn_\n};\n","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\n\nexport function init() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n}\n\nexport function inverse(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {EPSLN, HALF_PI, FORTPI} from '../constants/values';\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() {\n this.no_off = this.no_off || false;\n this.no_rot = this.no_rot || false;\n\n if (isNaN(this.k0)) {\n this.k0 = 1;\n }\n var sinlat = Math.sin(this.lat0);\n var coslat = Math.cos(this.lat0);\n var con = this.e * sinlat;\n\n this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));\n this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);\n var t0 = tsfnz(this.e, this.lat0, sinlat);\n var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));\n if (dl * dl < 1) {\n dl = 1;\n }\n var fl;\n var gl;\n if (!isNaN(this.longc)) {\n //Central point and azimuth method\n\n if (this.lat0 >= 0) {\n fl = dl + Math.sqrt(dl * dl - 1);\n }\n else {\n fl = dl - Math.sqrt(dl * dl - 1);\n }\n this.el = fl * Math.pow(t0, this.bl);\n gl = 0.5 * (fl - 1 / fl);\n this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);\n this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;\n\n }\n else {\n //2 points method\n var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));\n var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));\n if (this.lat0 >= 0) {\n this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n else {\n this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n var hl = Math.pow(t1, this.bl);\n var ll = Math.pow(t2, this.bl);\n fl = this.el / hl;\n gl = 0.5 * (fl - 1 / fl);\n var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);\n var pl = (ll - hl) / (ll + hl);\n var dlon12 = adjust_lon(this.long1 - this.long2);\n this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;\n this.long0 = adjust_lon(this.long0);\n var dlon10 = adjust_lon(this.long1 - this.long0);\n this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);\n this.alpha = Math.asin(dl * Math.sin(this.gamma0));\n }\n\n if (this.no_off) {\n this.uc = 0;\n }\n else {\n if (this.lat0 >= 0) {\n this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n else {\n this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n }\n\n}\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var dlon = adjust_lon(lon - this.long0);\n var us, vs;\n var con;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n if (lat > 0) {\n con = -1;\n }\n else {\n con = 1;\n }\n vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));\n us = -1 * con * HALF_PI * this.al / this.bl;\n }\n else {\n var t = tsfnz(this.e, lat, Math.sin(lat));\n var ql = this.el / Math.pow(t, this.bl);\n var sl = 0.5 * (ql - 1 / ql);\n var tl = 0.5 * (ql + 1 / ql);\n var vl = Math.sin(this.bl * (dlon));\n var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;\n if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {\n vs = Number.POSITIVE_INFINITY;\n }\n else {\n vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;\n }\n if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {\n us = this.al * this.bl * (dlon);\n }\n else {\n us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;\n }\n }\n\n if (this.no_rot) {\n p.x = this.x0 + us;\n p.y = this.y0 + vs;\n }\n else {\n\n us -= this.uc;\n p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);\n p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);\n }\n return p;\n}\n\nexport function inverse(p) {\n var us, vs;\n if (this.no_rot) {\n vs = p.y - this.y0;\n us = p.x - this.x0;\n }\n else {\n vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);\n us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);\n us += this.uc;\n }\n var qp = Math.exp(-1 * this.bl * vs / this.al);\n var sp = 0.5 * (qp - 1 / qp);\n var tp = 0.5 * (qp + 1 / qp);\n var vp = Math.sin(this.bl * us / this.al);\n var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;\n var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);\n if (Math.abs(up - 1) < EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n }\n else if (Math.abs(up + 1) < EPSLN) {\n p.x = this.long0;\n p.y = -1 * HALF_PI;\n }\n else {\n p.y = phi2z(this.e, ts);\n p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);\n }\n return p;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"omerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n\n // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north\n //double c_lat; /* center latitude */\n //double c_lon; /* center longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Lambert Tangential Conformal Conic Projection\", \"Lambert_Conformal_Conic\", \"Lambert_Conformal_Conic_2SP\", \"lcc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexport function init() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.lat0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = authlat(Math.asin(ab), this.apa);\n }\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n var t;\n var APA = [];\n APA[0] = es * P00;\n t = es * es;\n APA[0] += t * P01;\n APA[1] = t * P10;\n t *= es;\n APA[0] += t * P02;\n APA[1] += t * P11;\n APA[2] = t * P20;\n return APA;\n}\n\nfunction authlat(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n S_POLE: S_POLE,\n N_POLE: N_POLE,\n EQUIT: EQUIT,\n OBLIQ: OBLIQ\n};\n","export default function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project\n // to infinity, on a bearing\n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that\n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n reference:\n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n}\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n}\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexport function init() {\n //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexport function forward(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n while (true) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexport function init() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n}\n\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexport function inverse(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c ? c / Math.sin(c) : 1;\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n}\n\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n sinpsi = Math.sin(psi);\n lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n //double temp; /* temporary variable */\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g, x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.a * ksp * cosphi * Math.sin(dlon);\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* height above ellipsoid */\n var z; /* angle */\n var sinz, cosz; /* sin of z and cos of z */\n var con;\n var lon, lat;\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n z = asinz(rh / this.a);\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n FRONT: 1,\n RIGHT: 2,\n BACK: 3,\n LEFT: 4,\n TOP: 5,\n BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n AREA_0: 1,\n AREA_1: 2,\n AREA_2: 3,\n AREA_3: 4\n};\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n /* Determine the cube face from the center of projection. */\n if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n this.face = FACE_ENUM.TOP;\n } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n this.face = FACE_ENUM.BOTTOM;\n } else if (Math.abs(this.long0) <= FORTPI) {\n this.face = FACE_ENUM.FRONT;\n } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n } else {\n this.face = FACE_ENUM.BACK;\n }\n\n /* Fill in useful values for the ellipsoid <-> sphere shift\n * described in [LK12]. */\n if (this.es !== 0) {\n this.one_minus_f = 1 - (this.a - this.b) / this.a;\n this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n var xy = {x: 0, y: 0};\n var lat, lon;\n var theta, phi;\n var t, mu;\n /* nu; */\n var area = {value: 0};\n\n // move lon according to projection's lon\n p.x -= this.long0;\n\n /* Convert the geodetic latitude to a geocentric latitude.\n * This corresponds to the shift from the ellipsoid to the sphere\n * described in [LK12]. */\n if (this.es !== 0) {//if (P->es != 0) {\n lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n } else {\n lat = p.y;\n }\n\n /* Convert the input lat, lon into theta, phi as used by QSC.\n * This depends on the cube face and the area on it.\n * For the top and bottom face, we can compute theta and phi\n * directly from phi, lam. For the other faces, we must use\n * unit sphere cartesian coordinates as an intermediate step. */\n lon = p.x; //lon = lp.lam;\n if (this.face === FACE_ENUM.TOP) {\n phi = HALF_PI - lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = lon - HALF_PI;\n } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_1;\n theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n area.value = AREA_ENUM.AREA_2;\n theta = lon + HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = lon;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = HALF_PI + lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = -lon + HALF_PI;\n } else if (lon < FORTPI && lon >= -FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta = -lon;\n } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = -lon - HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n }\n } else {\n var q, r, s;\n var sinlat, coslat;\n var sinlon, coslon;\n\n if (this.face === FACE_ENUM.RIGHT) {\n lon = qsc_shift_lon_origin(lon, +HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lon = qsc_shift_lon_origin(lon, +SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lon = qsc_shift_lon_origin(lon, -HALF_PI);\n }\n sinlat = Math.sin(lat);\n coslat = Math.cos(lat);\n sinlon = Math.sin(lon);\n coslon = Math.cos(lon);\n q = coslat * coslon;\n r = coslat * sinlon;\n s = sinlat;\n\n if (this.face === FACE_ENUM.FRONT) {\n phi = Math.acos(q);\n theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n } else if (this.face === FACE_ENUM.RIGHT) {\n phi = Math.acos(r);\n theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n } else if (this.face === FACE_ENUM.BACK) {\n phi = Math.acos(-q);\n theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n } else if (this.face === FACE_ENUM.LEFT) {\n phi = Math.acos(-r);\n theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n } else {\n /* Impossible */\n phi = theta = 0;\n area.value = AREA_ENUM.AREA_0;\n }\n }\n\n /* Compute mu and nu for the area of definition.\n * For mu, see Eq. (3-21) in [OL76], but note the typos:\n * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n /* Apply the result to the real area. */\n if (area.value === AREA_ENUM.AREA_1) {\n mu += HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_2) {\n mu += SPI;\n } else if (area.value === AREA_ENUM.AREA_3) {\n mu += 1.5 * SPI;\n }\n\n /* Now compute x, y from mu and nu */\n xy.x = t * Math.cos(mu);\n xy.y = t * Math.sin(mu);\n xy.x = xy.x * this.a + this.x0;\n xy.y = xy.y * this.a + this.y0;\n\n p.x = xy.x;\n p.y = xy.y;\n return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n var lp = {lam: 0, phi: 0};\n var mu, nu, cosmu, tannu;\n var tantheta, theta, cosphi, phi;\n var t;\n var area = {value: 0};\n\n /* de-offset */\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n /* Convert the input x, y to the mu and nu angles as used by QSC.\n * This depends on the area of the cube face. */\n nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n mu = Math.atan2(p.y, p.x);\n if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_0;\n } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n area.value = AREA_ENUM.AREA_1;\n mu -= HALF_PI;\n } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_2;\n mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n mu += HALF_PI;\n }\n\n /* Compute phi and theta for the area of definition.\n * The inverse projection is not described in the original paper, but some\n * good hints can be found here (as of 2011-12-14):\n * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n t = (SPI / 12) * Math.tan(mu);\n tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n theta = Math.atan(tantheta);\n cosmu = Math.cos(mu);\n tannu = Math.tan(nu);\n cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n if (cosphi < -1) {\n cosphi = -1;\n } else if (cosphi > +1) {\n cosphi = +1;\n }\n\n /* Apply the result to the real area on the cube face.\n * For the top and bottom face, we can compute phi and lam directly.\n * For the other faces, we must use unit sphere cartesian coordinates\n * as an intermediate step. */\n if (this.face === FACE_ENUM.TOP) {\n phi = Math.acos(cosphi);\n lp.phi = HALF_PI - phi;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = theta;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = Math.acos(cosphi);\n lp.phi = phi - HALF_PI;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = -theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = -theta;\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = -theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n }\n } else {\n /* Compute phi and lam via cartesian unit sphere coordinates. */\n var q, r, s;\n q = cosphi;\n t = q * q;\n if (t >= 1) {\n s = 0;\n } else {\n s = Math.sqrt(1 - t) * Math.sin(theta);\n }\n t += s * s;\n if (t >= 1) {\n r = 0;\n } else {\n r = Math.sqrt(1 - t);\n }\n /* Rotate q,r,s into the correct area. */\n if (area.value === AREA_ENUM.AREA_1) {\n t = r;\n r = -s;\n s = t;\n } else if (area.value === AREA_ENUM.AREA_2) {\n r = -r;\n s = -s;\n } else if (area.value === AREA_ENUM.AREA_3) {\n t = r;\n r = s;\n s = -t;\n }\n /* Rotate q,r,s into the correct cube face. */\n if (this.face === FACE_ENUM.RIGHT) {\n t = q;\n q = -r;\n r = t;\n } else if (this.face === FACE_ENUM.BACK) {\n q = -q;\n r = -r;\n } else if (this.face === FACE_ENUM.LEFT) {\n t = q;\n q = r;\n r = -t;\n }\n /* Now compute phi and lam from the unit sphere coordinates. */\n lp.phi = Math.acos(-s) - HALF_PI;\n lp.lam = Math.atan2(r, q);\n if (this.face === FACE_ENUM.RIGHT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n }\n }\n\n /* Apply the shift from the sphere to the ellipsoid as described\n * in [LK12]. */\n if (this.es !== 0) {\n var invert_sign;\n var tanphi, xa;\n invert_sign = (lp.phi < 0 ? 1 : 0);\n tanphi = Math.tan(lp.phi);\n xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n if (invert_sign) {\n lp.phi = -lp.phi;\n }\n }\n\n lp.lam += this.long0;\n p.x = lp.lam;\n p.y = lp.phi;\n return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n var theta;\n if (phi < EPSLN) {\n area.value = AREA_ENUM.AREA_0;\n theta = 0.0;\n } else {\n theta = Math.atan2(y, x);\n if (Math.abs(theta) <= FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta -= HALF_PI;\n } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta += HALF_PI;\n }\n }\n return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n var slon = lon + offset;\n if (slon < -SPI) {\n slon += TWO_PI;\n } else if (slon > +SPI) {\n slon -= TWO_PI;\n }\n return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n var x = start;\n for (; iters; --iters) {\n var upd = f_df(x);\n x -= upd;\n if (Math.abs(upd) < max_err) {\n break;\n }\n }\n return x;\n}\n\nexport function init() {\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.long0 = this.long0 || 0;\n this.es = 0;\n this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n var lon = adjust_lon(ll.x - this.long0);\n\n var dphi = Math.abs(ll.y);\n var i = Math.floor(dphi * C1);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n dphi = R2D * (dphi - RC1 * i);\n var xy = {\n x: poly3_val(COEFS_X[i], dphi) * lon,\n y: poly3_val(COEFS_Y[i], dphi)\n };\n if (ll.y < 0) {\n xy.y = -xy.y;\n }\n\n xy.x = xy.x * this.a * FXC + this.x0;\n xy.y = xy.y * this.a * FYC + this.y0;\n return xy;\n}\n\nexport function inverse(xy) {\n var ll = {\n x: (xy.x - this.x0) / (this.a * FXC),\n y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n };\n\n if (ll.y >= 1) { // pathologic case\n ll.x /= COEFS_X[NODES][0];\n ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n } else {\n // find table interval\n var i = Math.floor(ll.y * NODES);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n for (;;) {\n if (COEFS_Y[i][0] > ll.y) {\n --i;\n } else if (COEFS_Y[i+1][0] <= ll.y) {\n ++i;\n } else {\n break;\n }\n }\n // linear interpolation in 5 degree interval\n var coefs = COEFS_Y[i];\n var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n // find t so that poly3_val(coefs, t) = ll.y\n t = newton_rapshon(function(x) {\n return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n }, t, EPSLN, 100);\n\n ll.x /= poly3_val(COEFS_X[i], t);\n ll.y = (5 * i + t) * D2R;\n if (xy.y < 0) {\n ll.y = -ll.y;\n }\n }\n\n ll.x = adjust_lon(ll.x + this.long0);\n return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {\n geodeticToGeocentric,\n geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n var point = geodeticToGeocentric(p, this.es, this.a);\n return point;\n}\n\nexport function inverse(p) {\n var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nexport default function(proj4){\n proj4.Proj.projections.add(tmerc);\n proj4.Proj.projections.add(etmerc);\n proj4.Proj.projections.add(utm);\n proj4.Proj.projections.add(sterea);\n proj4.Proj.projections.add(stere);\n proj4.Proj.projections.add(somerc);\n proj4.Proj.projections.add(omerc);\n proj4.Proj.projections.add(lcc);\n proj4.Proj.projections.add(krovak);\n proj4.Proj.projections.add(cass);\n proj4.Proj.projections.add(laea);\n proj4.Proj.projections.add(aea);\n proj4.Proj.projections.add(gnom);\n proj4.Proj.projections.add(cea);\n proj4.Proj.projections.add(eqc);\n proj4.Proj.projections.add(poly);\n proj4.Proj.projections.add(nzmg);\n proj4.Proj.projections.add(mill);\n proj4.Proj.projections.add(sinu);\n proj4.Proj.projections.add(moll);\n proj4.Proj.projections.add(eqdc);\n proj4.Proj.projections.add(vandg);\n proj4.Proj.projections.add(aeqd);\n proj4.Proj.projections.add(ortho);\n proj4.Proj.projections.add(qsc);\n proj4.Proj.projections.add(robin);\n proj4.Proj.projections.add(geocent);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","/**\n * @module ol/proj/proj4\n */\nimport { addCoordinateTransforms, addProjection, addEquivalentProjections, get } from '../proj.js';\nimport { get as getTransform } from './transforms.js';\nimport Projection from './Projection.js';\n/**\n * Make projections defined in proj4 (with `proj4.defs()`) available in\n * OpenLayers.\n *\n * This function should be called whenever changes are made to the proj4\n * registry, e.g. after calling `proj4.defs()`. Existing transforms will not be\n * modified by this function.\n *\n * @param {?} proj4 Proj4.\n * @api\n */\nexport function register(proj4) {\n var projCodes = Object.keys(proj4.defs);\n var len = projCodes.length;\n var i, j;\n for (i = 0; i < len; ++i) {\n var code = projCodes[i];\n if (!get(code)) {\n var def = proj4.defs(code);\n addProjection(new Projection({\n code: code,\n axisOrientation: def.axis,\n metersPerUnit: def.to_meter,\n units: def.units\n }));\n }\n }\n for (i = 0; i < len; ++i) {\n var code1 = projCodes[i];\n var proj1 = get(code1);\n for (j = 0; j < len; ++j) {\n var code2 = projCodes[j];\n var proj2 = get(code2);\n if (!getTransform(code1, code2)) {\n if (proj4.defs[code1] === proj4.defs[code2]) {\n addEquivalentProjections([proj1, proj2]);\n }\n else {\n var transform = proj4(code1, code2);\n addCoordinateTransforms(proj1, proj2, transform.forward, transform.inverse);\n }\n }\n }\n }\n}\n//# sourceMappingURL=proj4.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"tooltip\",staticClass:\"tooltip\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapTooltip.vue?vue&type=template&id=36135895&scoped=true&\"\nimport script from \"./MapTooltip.vue?vue&type=script&lang=js&\"\nexport * from \"./MapTooltip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapTooltip.vue?vue&type=style&index=0&id=36135895&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36135895\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.e)?_c('div',{staticClass:\"popup\"},[_c('div',{staticClass:\"header d-flex align-center\"},[_c('span',{staticClass:\"flex-grow-1 pa-2\"},[(_vm.activeItem)?[(_vm.results.length > 1)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":_vm.prev}},[_c('v-icon',{attrs:{\"title\":\"Ankstesnis\"}},[_vm._v(\" mdi-chevron-left \")])],1):_vm._e(),_vm._v(\" \"+_vm._s(_vm.activeItemNumber + 1)+\" iš \"+_vm._s(_vm.results.length)+\" \"),(_vm.results.length > 1)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":_vm.next}},[_c('v-icon',{attrs:{\"title\":\"Kitas\"}},[_vm._v(\" mdi-chevron-right \")])],1):_vm._e()]:[_vm._v(\" Identifikavimo rezultatai \")]],2),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.hidePopup}},[_c('v-icon',{attrs:{\"size\":\"20\",\"title\":\"Uždaryti\"}},[_vm._v(\"mdi-close-circle\")])],1)],1),_c('div',{staticClass:\"pa-2 content\"},[(_vm.loading)?[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"size\":20,\"width\":\"2\"}})]:(_vm.results)?[(_vm.results == 'error')?[_vm._v(\" Atsiprašome, įvyko nenumatyta klaida... \")]:(_vm.activeItem)?[_vm._v(\" Sluoksnis: \"+_vm._s(_vm.activeItem.layer.service.title)+\" \"),(_vm.activeItem.item)?[(_vm.activeItem.item.value)?_c('div',{staticClass:\"body-2\"},[_vm._v(_vm._s(_vm.activeItem.item.value))]):_vm._e(),_c('MapLayerAttributes',{staticClass:\"mt-n2\",attrs:{\"meta\":_vm.activeItem.item}})]:(_vm.activeItem.html)?[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.activeItem.html)}})]:_vm._e()]:[_vm._v(\" Rezultatų nėra \")]]:_vm._e()],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapPopup.vue?vue&type=template&id=4edad122&scoped=true&\"\nimport script from \"./MapPopup.vue?vue&type=script&lang=js&\"\nexport * from \"./MapPopup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapPopup.vue?vue&type=style&index=0&id=4edad122&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4edad122\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VBtn,VIcon,VProgressCircular})\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MyMap.vue?vue&type=template&id=ad3327f6&scoped=true&\"\nimport script from \"./MyMap.vue?vue&type=script&lang=js&\"\nexport * from \"./MyMap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MyMap.vue?vue&type=style&index=0&id=ad3327f6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ad3327f6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\ninstallComponents(component, {VProgressCircular,VProgressLinear})\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend'\n};\n//# sourceMappingURL=MapEventType.js.map","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=style&index=0&id=4edad122&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=style&index=0&id=4edad122&scoped=true&lang=css&\"","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAaCAYAAABCfffNAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAABQ9JREFUSEuVVn9MlHUc1n4Hk7ArwMTc7A+jqM3VCJr9QQluggbmgGoo0wGbChZJc7Kc0OaK6TRtCpoKhgjWHedA7jAvftlxcIlg3DHjsIxckC6HQnrt4unzvLzvdSen2bs9e399Pp/n+3x+fN93+rS7H9N9XvPa9157BbkgfO//I+zkay3gfXL9gOAhwSOCIEGwD3jP53xPO9rfaTF+xDTSgj+sBg6Rs04QJogQzFLPvOdzvich7X3JAirSCB6Ut4/SOSYmZn5aWtrGlStX1q9Zs+ZSdna2Z/Xq1b9kZmY2pqamFkVFRb0sdrMFT6hk9KO/piqgAhpwVaEpKSlv5+fnY9eundB/XYuWllOwfteChno9vjiwFyUlW7Bu7VokJibmiv08VWGo6h+QiCoolSsJTU9Pf6+kpFgCGuF09uKH82fRfdYGm7UFLc1mmBvrYKyrxp7PtuPDwgIkJydvFb/5gqfor8ZhPG+zaGliTkOooLh4Kyynm3DW3oEuWzu6OttRXl4OPufZZBISQzVqaw7j4IHPsWlTIeLj4zeoRKwZ68R4TJtyaCqCWIO8vDwY9MfxfZd1kkAFCTSYGg04YTwmSo+LKgMqDpVh/fp1mDt3boKaOtaIaacaLwnbMIRFLi39RAKf8SM42aD3U1JnOArLNw1oazVLnSzosFpQWroNixcv3i5xogVsBqphXOWgJPa7jl1UcXi/5L5VJWlTziaTAVw908Rrs9mITlsrznVb0Xfejn5nt6ivhtSyTeLEqGrY3oyrHPer0sLYprU1lUoKOs40K0VmUK0eWk1I3N3dAXtXOy79fAG/Dg2g55wNWVlZwxLrNQGbgHPElHlJOMkRnIPaY4eg/+pLpbDK6lX4ErlcfRgcdGJgwIFrf/yO8fHruHplCPSXOK8Lnmc8AeP6kczioO0v34XaYwdRp69SCCyWk+jt6fRT45Lgg4P9uHlzDBMTHng8blweuohVq1aNSMRFKgm7bApJBCd5z+5SnKg7iiZJk9PZA4ejBy6Xw49k4EIfrl27AsCj4NatG1KjdqxYscJ2NyXMXRi3io9lkpvMBukcEwZdTmXFPPumi4GpYJLkbwFQWXmIs1J+p5p4u4t7Efu96sgB6apmCe7ARSHo7LR6Z4TF/zc4SSBqHSgoeB/h4eGZQhKwuziMypwIZnMv2vJRkcxBPQZ+7MWppnrvpPurmVAIRkZGsGPHDsTFxe0U/zcELwgiBY+pcZXCeyderjmp85YtW/Zp8dYt+NbSiJHhnzB24wr+co9KSLdgMjiP/v5+hSAhIaFG/JJVFc/I+UnBlIlnypS9S8CueFYcizbILny0qgK/Xb6ICc+4l2B0dBRGo1FSVIDY2Nh9Yv+m4FX6qf5T9i5fNcouzLQJnouMjExeunRp9e7dOzE+dlWphdvtRllZGbd4k06ny1cJFtJe9aM/4/jtwhoJ1Wjfk5lyzbxyqBZmZGS0n2k7LZn6E3Z7F1vVLs/fVVNEAtrRnn5M0z1/uLxES5Ys2bZv7x5cHx3GEWlVSSVTlCiIUwnm3AsB1fgq0j5gj8vDOQsWLFi0cWMBXAO92Lx5E6Kjo6niJQFrQALaaSkK+OnVCHyJfDtOFxQU9HROTo58DWuQm5uL4ODgF8WYXcTacbfVOume/lZuJ+L8cP+ZuXz58rcKCz9AUlLSO2r+ucsypXxPu/9FcLsy7ddohnTaK+rKGXyGqkD7FQr08zftH86LEbL35rZnAAAAAElFTkSuQmCC\"","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=style&index=0&id=ad3327f6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=style&index=0&id=ad3327f6&scoped=true&lang=css&\"","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n 'v-avatar--tile': this.tile,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = 2 * Math.PI / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleCards.vue?vue&type=style&index=0&id=17460626&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleCards.vue?vue&type=style&index=0&id=17460626&scoped=true&lang=css&\"","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/MouseWheelZoom\n */\nimport { always, focus } from '../events/condition.js';\nimport EventType from '../events/EventType.js';\nimport { DEVICE_PIXEL_RATIO, FIREFOX } from '../has.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport { clamp } from '../math.js';\n/**\n * @enum {string}\n */\nexport var Mode = {\n TRACKPAD: 'trackpad',\n WHEEL: 'wheel'\n};\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition~always}.\n * In addition, if there is a `tabindex` attribute on the map element,\n * {@link module:ol/events/condition~focus} will also be applied.\n * @property {number} [maxDelta=1] Maximum mouse wheel delta.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [timeout=80] Mouse wheel timeout duration in milliseconds.\n * @property {boolean} [useAnchor=true] Enable zooming using the mouse's\n * location as the anchor. When set to `false`, zooming in and out will zoom to\n * the center of the screen instead of zooming on the mouse's location.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by scrolling the mouse wheel.\n * @api\n */\nvar MouseWheelZoom = /** @class */ (function (_super) {\n __extends(MouseWheelZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function MouseWheelZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)) || this;\n /**\n * @private\n * @type {number}\n */\n _this.totalDelta_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.lastDelta_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = options.maxDelta !== undefined ? options.maxDelta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @private\n * @type {number}\n */\n _this.timeout_ = options.timeout !== undefined ? options.timeout : 80;\n /**\n * @private\n * @type {boolean}\n */\n _this.useAnchor_ = options.useAnchor !== undefined ? options.useAnchor : true;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : always;\n /**\n * @private\n * @type {?import(\"../coordinate.js\").Coordinate}\n */\n _this.lastAnchor_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.startTime_ = undefined;\n /**\n * @private\n * @type {?}\n */\n _this.timeoutId_;\n /**\n * @private\n * @type {Mode|undefined}\n */\n _this.mode_ = undefined;\n /**\n * Trackpad events separated by this delay will be considered separate\n * interactions.\n * @type {number}\n */\n _this.trackpadEventGap_ = 400;\n /**\n * @type {?}\n */\n _this.trackpadTimeoutId_;\n /**\n * The number of delta values per zoom level\n * @private\n * @type {number}\n */\n _this.deltaPerZoom_ = 300;\n return _this;\n }\n /**\n * @private\n * @param {import(\"../MapBrowserEvent\").default} mapBrowserEvent Event.\n * @return {boolean} Condition passes.\n */\n MouseWheelZoom.prototype.conditionInternal_ = function (mapBrowserEvent) {\n var pass = true;\n if (mapBrowserEvent.map.getTargetElement().hasAttribute('tabindex')) {\n pass = focus(mapBrowserEvent);\n }\n return pass && this.condition_(mapBrowserEvent);\n };\n /**\n * @private\n */\n MouseWheelZoom.prototype.endInteraction_ = function () {\n this.trackpadTimeoutId_ = undefined;\n var view = this.getMap().getView();\n view.endInteraction(undefined, this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0, this.lastAnchor_);\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventually\n * zooms the map.\n * @override\n */\n MouseWheelZoom.prototype.handleEvent = function (mapBrowserEvent) {\n if (!this.conditionInternal_(mapBrowserEvent)) {\n return true;\n }\n var type = mapBrowserEvent.type;\n if (type !== EventType.WHEEL) {\n return true;\n }\n mapBrowserEvent.preventDefault();\n var map = mapBrowserEvent.map;\n var wheelEvent = /** @type {WheelEvent} */ (mapBrowserEvent.originalEvent);\n if (this.useAnchor_) {\n this.lastAnchor_ = mapBrowserEvent.coordinate;\n }\n // Delta normalisation inspired by\n // https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js\n var delta;\n if (mapBrowserEvent.type == EventType.WHEEL) {\n delta = wheelEvent.deltaY;\n if (FIREFOX &&\n wheelEvent.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n delta /= DEVICE_PIXEL_RATIO;\n }\n if (wheelEvent.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n delta *= 40;\n }\n }\n if (delta === 0) {\n return false;\n }\n else {\n this.lastDelta_ = delta;\n }\n var now = Date.now();\n if (this.startTime_ === undefined) {\n this.startTime_ = now;\n }\n if (!this.mode_ || now - this.startTime_ > this.trackpadEventGap_) {\n this.mode_ = Math.abs(delta) < 4 ?\n Mode.TRACKPAD :\n Mode.WHEEL;\n }\n var view = map.getView();\n if (this.mode_ === Mode.TRACKPAD && !view.getConstrainResolution()) {\n if (this.trackpadTimeoutId_) {\n clearTimeout(this.trackpadTimeoutId_);\n }\n else {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.beginInteraction();\n }\n this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_);\n view.adjustZoom(-delta / this.deltaPerZoom_, this.lastAnchor_);\n this.startTime_ = now;\n return false;\n }\n this.totalDelta_ += delta;\n var timeLeft = Math.max(this.timeout_ - (now - this.startTime_), 0);\n clearTimeout(this.timeoutId_);\n this.timeoutId_ = setTimeout(this.handleWheelZoom_.bind(this, map), timeLeft);\n return false;\n };\n /**\n * @private\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n MouseWheelZoom.prototype.handleWheelZoom_ = function (map) {\n var view = map.getView();\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n var delta = -clamp(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_;\n if (view.getConstrainResolution()) {\n // view has a zoom constraint, zoom by 1\n delta = delta ? delta > 0 ? 1 : -1 : 0;\n }\n zoomByDelta(view, delta, this.lastAnchor_, this.duration_);\n this.mode_ = undefined;\n this.totalDelta_ = 0;\n this.lastAnchor_ = null;\n this.startTime_ = undefined;\n this.timeoutId_ = undefined;\n };\n /**\n * Enable or disable using the mouse's location as an anchor when zooming\n * @param {boolean} useAnchor true to zoom to the mouse's location, false\n * to zoom to the center of the map\n * @api\n */\n MouseWheelZoom.prototype.setMouseAnchor = function (useAnchor) {\n this.useAnchor_ = useAnchor;\n if (!useAnchor) {\n this.lastAnchor_ = null;\n }\n };\n return MouseWheelZoom;\n}(Interaction));\nexport default MouseWheelZoom;\n//# sourceMappingURL=MouseWheelZoom.js.map","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var minX = extent[0] + viewWidth / 2;\n var maxX = extent[2] - viewWidth / 2;\n var minY = extent[1] + viewHeight / 2;\n var maxY = extent[3] - viewHeight / 2;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x += -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y += -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\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//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { linearFindNearest } from './array.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { clamp } from './math.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent=} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *= Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio + 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /= Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) / ratio + 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.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, toUserCoordinate, toUserExtent, fromUserCoordinate, fromUserExtent, getUserProjection } from './proj.js';\nimport Units from './proj/Units.js';\nimport { equals } from './coordinate.js';\nimport { easeOut } from './easing.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\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 * @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 * @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} [nearest=false] If the view `constrainResolution` option is `true`,\n * get 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 * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, 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 * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `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 {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\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.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\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 remain 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 * @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 * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\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 * A 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 view states\n *\n * A 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 * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its 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 view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\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 View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\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): void)} 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 View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var 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 var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(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 var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var 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 callback: callback\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\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 }\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 * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\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 View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1 ?\n animation.targetResolution :\n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {\n var 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 var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\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 var 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_.bind(this));\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 View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\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 * @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 View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution;\n var y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation))\n ];\n }\n else {\n return size;\n }\n };\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * @param {import(\"./size.js\").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size) ? opt_size.slice() : [100, 100];\n this.resolveConstraints(0);\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 View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (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 }\n else {\n return this.hints_.slice();\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\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\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 */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSize_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\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 View.prototype.getResolutions = function () {\n return this.resolutions_;\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 View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\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 */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSize_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\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 View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var 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 var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\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 View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = (Math.log(maxResolution / resolution) / logPower) / max;\n return value;\n });\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom()\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\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 View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var 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 }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\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 * 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 View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return this.resolutions_[baseLevel] / Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1));\n }\n else {\n return this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_);\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 View.prototype.fit = function (geometryOrExtent, opt_options) {\n var options = assign({ size: this.getViewportSize_() }, opt_options || {});\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent.clone().transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSize_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var 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 // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution) ? minResolution :\n Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += (padding[1] - padding[3]) / 2 * resolution;\n centerRotY += (padding[0] - padding[2]) / 2 * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = [centerX, centerY];\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\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 View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\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 */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n // calculate rotated position\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n var resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n this.setCenterInternal([centerX, centerY]);\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {ViewHint} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) || !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\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 * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined ? options.smoothExtentConstraint : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\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 var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ?\n options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ?\n options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ?\n options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ?\n options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution = resolutions[maxZoom] !== undefined ?\n resolutions[maxZoom] : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent ?\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(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution / Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\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 }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom = minZoom + Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return { constraint: resolutionConstraint, maxResolution: maxResolution,\n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ?\n options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\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}\nexport default View;\n//# sourceMappingURL=View.js.map","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/\n// Variable to hold current primary touch event identifier.\n// iOS needs this since it does not attribute\n// identifier 0 to primary touch event.\nvar primaryTouchId = null;\n// Variable to hold mouse pointer captures.\nvar mouseCaptureTarget = null;\nif (!(\"PointerEvent\" in window)) {\n // Define {set,release}PointerCapture\n definePointerCapture();\n // Create Pointer polyfill from mouse events only on non-touch device\n if (!(\"TouchEvent\" in window)) {\n addMouseToPointerListener(document, \"mousedown\", \"pointerdown\");\n addMouseToPointerListener(document, \"mousemove\", \"pointermove\");\n addMouseToPointerListener(document, \"mouseup\", \"pointerup\");\n }\n // Define Pointer polyfill from touch events\n addTouchToPointerListener(document, \"touchstart\", \"pointerdown\");\n addTouchToPointerListener(document, \"touchmove\", \"pointermove\");\n addTouchToPointerListener(document, \"touchend\", \"pointerup\");\n}\n// Function defining {set,release}PointerCapture from {set,releas}Capture\nfunction definePointerCapture() {\n Element.prototype.setPointerCapture = Element.prototype.setCapture;\n Element.prototype.releasePointerCapture = Element.prototype.releaseCapture;\n}\n// Function converting a Mouse event to a Pointer event.\nfunction addMouseToPointerListener(target, mouseType, pointerType) {\n target.addEventListener(mouseType, function (mouseEvent) {\n var pointerEvent = new MouseEvent(pointerType, mouseEvent);\n pointerEvent.pointerId = 1;\n pointerEvent.isPrimary = true;\n pointerEvent.pointerType = \"mouse\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n // pressure is 0.5 if a button is holded\n \"buttons\" in mouseEvent && mouseEvent.buttons !== 0\n ? (pointerEvent.pressure = 0.5)\n : (pointerEvent.pressure = 0);\n // if already capturing mouse event, transfer target\n // and don't forget implicit release on mouseup.\n var target = mouseEvent.target;\n if (mouseCaptureTarget !== null) {\n target = mouseCaptureTarget;\n if (mouseType === \"mouseup\") {\n mouseCaptureTarget = null;\n }\n }\n target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n mouseEvent.preventDefault();\n }\n });\n}\n// Function converting a Touch event to a Pointer event.\nfunction addTouchToPointerListener(target, touchType, pointerType) {\n target.addEventListener(touchType, function (touchEvent) {\n var changedTouches = touchEvent.changedTouches;\n var nbTouches = changedTouches.length;\n for (var t = 0; t < nbTouches; t++) {\n var pointerEvent = new CustomEvent(pointerType, {\n bubbles: true,\n cancelable: true\n });\n pointerEvent.ctrlKey = touchEvent.ctrlKey;\n pointerEvent.shiftKey = touchEvent.shiftKey;\n pointerEvent.altKey = touchEvent.altKey;\n pointerEvent.metaKey = touchEvent.metaKey;\n var touch = changedTouches.item(t);\n pointerEvent.clientX = touch.clientX;\n pointerEvent.clientY = touch.clientY;\n pointerEvent.screenX = touch.screenX;\n pointerEvent.screenY = touch.screenY;\n pointerEvent.pageX = touch.pageX;\n pointerEvent.pageY = touch.pageY;\n var rect = touch.target.getBoundingClientRect();\n pointerEvent.offsetX = touch.clientX - rect.left;\n pointerEvent.offsetY = touch.clientY - rect.top;\n pointerEvent.pointerId = 1 + touch.identifier;\n // Default values for standard MouseEvent fields.\n pointerEvent.button = 0;\n pointerEvent.buttons = 1;\n pointerEvent.movementX = 0;\n pointerEvent.movementY = 0;\n pointerEvent.region = null;\n pointerEvent.relatedTarget = null;\n pointerEvent.x = pointerEvent.clientX;\n pointerEvent.y = pointerEvent.clientY;\n // Pointer event details\n pointerEvent.pointerType = \"touch\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n pointerEvent.pressure = 1;\n // First touch is the primary pointer event.\n if (touchType === \"touchstart\" && primaryTouchId === null) {\n primaryTouchId = touch.identifier;\n }\n pointerEvent.isPrimary = touch.identifier === primaryTouchId;\n // If first touch ends, reset primary touch id.\n if (touchType === \"touchend\" && pointerEvent.isPrimary) {\n primaryTouchId = null;\n }\n touchEvent.target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n touchEvent.preventDefault();\n }\n }\n });\n}\n//# sourceMappingURL=elm-pep.js.map","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\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 * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n return DoubleClickZoom;\n}(Interaction));\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 var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n}\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-row',{class:['row-' + _vm.cfg.grid.rows],attrs:{\"no-gutters\":\"\"}},[_vm._l((_vm.cells),function(cell,i){return [_c('v-col',{key:cell.id,staticClass:\"col\",attrs:{\"sm\":cell.sm,\"md\":cell.md,\"cols\":_vm.cols}},[_c('MyCard',{attrs:{\"id\":cell.id,\"canBeRemoved\":cell.canBeRemoved,\"canBeSplit\":cell.canBeSplit,\"splitCell\":_vm.splitCell,\"removeCell\":_vm.removeCell,\"content\":cell.content,\"manualWidgetActivation\":_vm.cells.length > 1,\"row\":cell.row,\"nr\":i + 1},on:{\"update:content\":function($event){return _vm.$set(cell, \"content\", $event)}}})],1)]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{ref:\"card\",class:['d-flex', _vm.active && _vm.manualWidgetActivation ? 'active' : '', _vm.currentAtlasDisplayType == 'edit' ? '' : 'no-outline'],attrs:{\"tile\":\"\",\"outlined\":\"\"}},[(_vm.cardContent)?[(_vm.cardContent.type == 'text')?[_c('div',{staticClass:\"ma-2 text-content\"},[(_vm.currentAtlasDisplayType == 'edit' && !_vm.cardContent.data.value)?[_c('div',{staticClass:\"no-text\"},[_vm._v(\"Teksto nėra\")])]:[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.cardContent.data.value)}})]],2)]:(_vm.cardContent.type == 'map')?[_c('MyMap',{attrs:{\"content\":_vm.cardContent.data,\"setActiveWhenLoaded\":!_vm.manualWidgetActivation,\"myCardRow\":_vm.row}})]:_vm._e()]:[_c('v-card-text',{staticClass:\"text-center\"},[(_vm.currentAtlasDisplayType == 'edit')?[_c('div',[_vm._v(\"Pasirinkite valdiklį\")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"indigo\"},on:{\"click\":function($event){return _vm.setContent('text')}}},[_vm._v(\" Tekstas \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"indigo\"},on:{\"click\":function($event){return _vm.setContent('map')}}},[_vm._v(\" Žemėlapis \")])]:_vm._e()],2)],_c('v-card-actions',{staticClass:\"actions\"},[(_vm.currentAtlasDisplayType == 'edit' && _vm.cardContent && _vm.manualWidgetActivation)?_c('v-btn',{class:[_vm.active ? 'active' : ''],attrs:{\"icon\":\"\",\"color\":\"indigo\"},on:{\"click\":_vm.activateWidget}},[_c('v-icon',{attrs:{\"title\":\"Aktyvuoti redagavimą\"}},[_vm._v(\"mdi-pencil\")])],1):_vm._e(),(_vm.currentAtlasDisplayType == 'view' && _vm.cardContent && (_vm.cardContent.type == 'map') && _vm.manualWidgetActivation && _vm.cardContent.data && _vm.cardContent.data.myMap && !_vm.cardContent.data.myMap.noLegendInPreview)?_c('v-btn',{class:[_vm.active ? 'active' : ''],attrs:{\"icon\":\"\",\"color\":\"indigo\"},on:{\"click\":_vm.activateWidget}},[_c('v-icon',{attrs:{\"title\":\"Rodyti info\"}},[_vm._v(\"mdi-information\")])],1):_vm._e(),(_vm.currentAtlasDisplayType == 'edit' && _vm.canBeSplit)?_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"indigo\"},on:{\"click\":function($event){return _vm.splitCell(_vm.id)}}},[_c('v-icon',{attrs:{\"title\":\"Pridėti ląstelę\"}},[_vm._v(\"mdi-view-grid-plus\")])],1):_vm._e(),(_vm.currentAtlasDisplayType == 'edit' && _vm.cardContent)?_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"indigo\"},on:{\"click\":function($event){return _vm.setContent(null)}}},[_c('v-icon',{attrs:{\"title\":\"Šalinti ląstelės turinį\"}},[_vm._v(\"mdi-delete\")])],1):_vm._e(),(_vm.currentAtlasDisplayType == 'edit' && _vm.canBeRemoved && !_vm.cardContent)?_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"indigo\"},on:{\"click\":function($event){return _vm.removeCell(_vm.id)}}},[_c('v-icon',{attrs:{\"title\":\"Šalinti ląstelę\"}},[_vm._v(\"mdi-delete-forever\")])],1):_vm._e()],1),((_vm.currentAtlasDisplayType == 'view') && _vm.cardContent && (_vm.cardContent.type == 'map') && _vm.cardContent.data && _vm.cardContent.data.mapNr)?_c('span',{staticClass:\"card-nr\"},[_c('v-avatar',{attrs:{\"color\":\"white\",\"size\":\"20\"}},[_c('span',{staticClass:\"text-h5\"},[_vm._v(_vm._s(_vm.cardContent.data.mapNr))])])],1):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MyCard.vue?vue&type=template&id=096faccb&scoped=true&\"\nimport script from \"./MyCard.vue?vue&type=script&lang=js&\"\nexport * from \"./MyCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MyCard.vue?vue&type=style&index=0&id=096faccb&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"096faccb\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VAvatar,VBtn,VCard,VCardActions,VCardText,VIcon})\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleCards.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleCards.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MultipleCards.vue?vue&type=template&id=17460626&scoped=true&\"\nimport script from \"./MultipleCards.vue?vue&type=script&lang=js&\"\nexport * from \"./MultipleCards.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MultipleCards.vue?vue&type=style&index=0&id=17460626&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17460626\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VRow})\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view'\n};\n//# sourceMappingURL=MapProperty.js.map","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/PinchZoom\n */\nimport { FALSE } from '../functions.js';\nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=400] Animation duration in milliseconds.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by pinching with two fingers\n * on a touch screen.\n * @api\n */\nvar PinchZoom = /** @class */ (function (_super) {\n __extends(PinchZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function PinchZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.anchor_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 400;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastDistance_ = undefined;\n /**\n * @private\n * @type {number}\n */\n _this.lastScaleDelta_ = 1;\n return _this;\n }\n /**\n * @inheritDoc\n */\n PinchZoom.prototype.handleDragEvent = function (mapBrowserEvent) {\n var scaleDelta = 1.0;\n var touch0 = this.targetPointers[0];\n var touch1 = this.targetPointers[1];\n var dx = touch0.clientX - touch1.clientX;\n var dy = touch0.clientY - touch1.clientY;\n // distance between touches\n var distance = Math.sqrt(dx * dx + dy * dy);\n if (this.lastDistance_ !== undefined) {\n scaleDelta = this.lastDistance_ / distance;\n }\n this.lastDistance_ = distance;\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (scaleDelta != 1.0) {\n this.lastScaleDelta_ = scaleDelta;\n }\n // scale anchor point.\n var viewportPosition = map.getViewport().getBoundingClientRect();\n var centroid = centroidFromPointers(this.targetPointers);\n centroid[0] -= viewportPosition.left;\n centroid[1] -= viewportPosition.top;\n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);\n // scale, bypass the resolution constraint\n map.render();\n view.adjustResolutionInternal(scaleDelta, this.anchor_);\n };\n /**\n * @inheritDoc\n */\n PinchZoom.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n var direction = this.lastScaleDelta_ > 1 ? 1 : -1;\n view.endInteraction(this.duration_, direction);\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * @inheritDoc\n */\n PinchZoom.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n var map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastDistance_ = undefined;\n this.lastScaleDelta_ = 1;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n else {\n return false;\n }\n };\n return PinchZoom;\n}(PointerInteraction));\nexport default PinchZoom;\n//# sourceMappingURL=PinchZoom.js.map","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","/**\n * @module ol/pointer/EventType\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//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport 'elm-pep';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } 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 EventType from './events/EventType.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\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 function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\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 * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance ?\n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserPointerEvent(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(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\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 * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\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 if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, MapBrowserEventType.POINTERUP, 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.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (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 var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\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 {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n if (!this.originalPointerMoveEvent_ || this.originalPointerMoveEvent_.defaultPrevented) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (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 * @inheritDoc\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\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 */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\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 PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var 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 * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\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 PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\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 PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\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 PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < (count >> 1)) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count &&\n priorities[rIndex] < priorities[lIndex] ?\n rIndex : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\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 PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var 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 }\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 return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \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 }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @inheritDoc\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR || state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var 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 * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var 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.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\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 */\nexport function getTilePriority(frameState, 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 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 between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;\n}\n//# sourceMappingURL=TileQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 * @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 {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers'\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 */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options=} opt_options Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addEventListener(getChangeEventType(Property.LAYERS), _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof /** @type {?} */ (layers).getArray === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var 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 this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var 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 * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\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 LayerGroup.prototype.getLayers = function () {\n return (\n /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS)));\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 LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n return states;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\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, { getTilePriority } 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 } from './events.js';\nimport EventType from './events/EventType.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty } from './extent.js';\nimport { TRUE } from './functions.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport LayerGroup from './layer/Group.js';\nimport { hasArea } from './size.js';\nimport { create as createTransform, apply as applyTransform } from './transform.js';\nimport { toUserCoordinate, fromUserCoordinate } from './proj.js';\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 {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\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.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\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 * 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 {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 * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = options.pixelRatio !== undefined ?\n options.pixelRatio : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className = 'ol-viewport' + ('ontouchstart' in window ? ' 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 /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = new MapBrowserEventHandler(_this, options.moveTolerance);\n var handleMapBrowserEvent = _this.handleMapBrowserEvent.bind(_this);\n for (var key in MapBrowserEventType) {\n _this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], handleMapBrowserEvent);\n }\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);\n _this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n _this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\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 _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\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 _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(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 }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\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 PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * @inheritDoc\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.mapBrowserEventHandler_.dispose();\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\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 PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = opt_options.layerFilter !== undefined ?\n opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\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 * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\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 *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\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 PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined ?\n options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\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 * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\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 */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\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 PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = 'changedTouches' in event ?\n /** @type {TouchEvent} */ (event).changedTouches[0] :\n /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top\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 PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\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 PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string' ? document.getElementById(target) : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user 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 PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\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 */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\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 PluggableMap.prototype.getControls = function () {\n return this.controls;\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 PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\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 PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\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 PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\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 PluggableMap.prototype.getLayerGroup = function () {\n return (\n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP)));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\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 PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\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 */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\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 PluggableMap.prototype.getSize = function () {\n return (\n /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE)));\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 PluggableMap.prototype.getView = function () {\n return (\n /** @type {View} */ (this.get(MapProperty.VIEW)));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\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 PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\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 PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\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 PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {Event} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (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 var target = /** @type {Node} */ (mapBrowserEvent.originalEvent.target);\n if (!mapBrowserEvent.dragging) {\n if (this.overlayContainerStopEvent_.contains(target) || !(document.body.contains(target) || this.viewport_.getRootNode && this.viewport_.getRootNode().contains(target))) {\n // Abort if the event target is a child of the container that doesn't allow\n // event propagation or is no longer in the page. It's possible for the target to no longer\n // be in the page if it has been removed in an event listener, this might happen in a Control\n // that recreates it's content based on user interaction either manually or via a render\n // in something like https://reactjs.org/\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n var interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\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 var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 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() && !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\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 var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.keyHandlerKeys_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n var 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 if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\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 var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this)\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\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 PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\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 PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\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 PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\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 PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState ? previousFrameState.declutterItems : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {}\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\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 PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\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 PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\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 PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\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 PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\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 PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var 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 this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10)\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?\n document.getElementById(options.keyboardEventTarget) :\n options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var 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 values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] = options.view !== undefined ?\n options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.controls).getArray === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map"],"sourceRoot":""}