{"version":3,"file":"geolite-map.js","mappings":"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AAS,CACL,EACA,EACA,EACA,GAEJ,eAAkB,CACd,IACA,IACA,IACA,GAEJ,KAAQ,CACJ,EACA,EACA,IACA,GAEJ,WAAc,CACV,IACA,GACA,IACA,GAEJ,MAAS,CACL,IACA,GACA,GACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,UAAa,CACT,GACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,IACA,EACA,GAEJ,UAAa,CACT,IACA,IACA,GACA,GAEJ,MAAS,CACL,IACA,IACA,GACA,GAEJ,eAAkB,CACd,IACA,IACA,IACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,GACA,GACA,GAEJ,KAAQ,CACJ,EACA,IACA,IACA,GAEJ,SAAY,CACR,EACA,EACA,IACA,GAEJ,SAAY,CACR,EACA,IACA,IACA,GAEJ,cAAiB,CACb,IACA,IACA,GACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,UAAa,CACT,EACA,IACA,EACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,YAAe,CACX,IACA,EACA,IACA,GAEJ,eAAkB,CACd,GACA,IACA,GACA,GAEJ,WAAc,CACV,IACA,IACA,EACA,GAEJ,WAAc,CACV,IACA,GACA,IACA,GAEJ,QAAW,CACP,IACA,EACA,EACA,GAEJ,WAAc,CACV,IACA,IACA,IACA,GAEJ,aAAgB,CACZ,IACA,IACA,IACA,GAEJ,cAAiB,CACb,GACA,GACA,IACA,GAEJ,cAAiB,CACb,GACA,GACA,GACA,GAEJ,cAAiB,CACb,GACA,GACA,GACA,GAEJ,cAAiB,CACb,EACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,EACA,IACA,GAEJ,SAAY,CACR,IACA,GACA,IACA,GAEJ,YAAe,CACX,EACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,IACA,IACA,GAEJ,WAAc,CACV,GACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,GACA,GACA,GAEJ,YAAe,CACX,IACA,IACA,IA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","sources":["webpack://GeoLiteMap/webpack/universalModuleDefinition","webpack://GeoLiteMap/webpack/runtime/load script","webpack://GeoLiteMap/./node_modules/@geo/js/dist/geo-js.min.js","webpack://GeoLiteMap/./node_modules/@icons/material/CheckIcon.js","webpack://GeoLiteMap/./node_modules/@icons/material/UnfoldMoreHorizontalIcon.js","webpack://GeoLiteMap/./node_modules/axios/index.js","webpack://GeoLiteMap/./node_modules/axios/lib/adapters/xhr.js","webpack://GeoLiteMap/./node_modules/axios/lib/axios.js","webpack://GeoLiteMap/./node_modules/axios/lib/cancel/Cancel.js","webpack://GeoLiteMap/./node_modules/axios/lib/cancel/CancelToken.js","webpack://GeoLiteMap/./node_modules/axios/lib/cancel/isCancel.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/Axios.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/InterceptorManager.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/buildFullPath.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/createError.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/dispatchRequest.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/enhanceError.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/mergeConfig.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/settle.js","webpack://GeoLiteMap/./node_modules/axios/lib/core/transformData.js","webpack://GeoLiteMap/./node_modules/axios/lib/defaults.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/bind.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/buildURL.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/combineURLs.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/cookies.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/spread.js","webpack://GeoLiteMap/./node_modules/axios/lib/helpers/validator.js","webpack://GeoLiteMap/./node_modules/axios/lib/utils.js","webpack://GeoLiteMap/./node_modules/classnames/index.js","webpack://GeoLiteMap/./node_modules/clsx/dist/clsx.m.js","webpack://GeoLiteMap/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://GeoLiteMap/./node_modules/earcut/src/earcut.js","webpack://GeoLiteMap/./node_modules/elm-pep/dist/elm-pep.js","webpack://GeoLiteMap/./src/img/LVM_GEO_logo_128.jpg","webpack://GeoLiteMap/./src/img/error-img.svg","webpack://GeoLiteMap/./node_modules/i18next/dist/cjs/i18next.js","webpack://GeoLiteMap/./node_modules/ieee754/index.js","webpack://GeoLiteMap/./node_modules/jszip/dist/jszip.min.js","webpack://GeoLiteMap/./node_modules/lodash/_DataView.js","webpack://GeoLiteMap/./node_modules/lodash/_Hash.js","webpack://GeoLiteMap/./node_modules/lodash/_ListCache.js","webpack://GeoLiteMap/./node_modules/lodash/_Map.js","webpack://GeoLiteMap/./node_modules/lodash/_MapCache.js","webpack://GeoLiteMap/./node_modules/lodash/_Promise.js","webpack://GeoLiteMap/./node_modules/lodash/_Set.js","webpack://GeoLiteMap/./node_modules/lodash/_SetCache.js","webpack://GeoLiteMap/./node_modules/lodash/_Stack.js","webpack://GeoLiteMap/./node_modules/lodash/_Symbol.js","webpack://GeoLiteMap/./node_modules/lodash/_Uint8Array.js","webpack://GeoLiteMap/./node_modules/lodash/_WeakMap.js","webpack://GeoLiteMap/./node_modules/lodash/_arrayEach.js","webpack://GeoLiteMap/./node_modules/lodash/_arrayFilter.js","webpack://GeoLiteMap/./node_modules/lodash/_arrayLikeKeys.js","webpack://GeoLiteMap/./node_modules/lodash/_arrayMap.js","webpack://GeoLiteMap/./node_modules/lodash/_arrayPush.js","webpack://GeoLiteMap/./node_modules/lodash/_arraySome.js","webpack://GeoLiteMap/./node_modules/lodash/_assignValue.js","webpack://GeoLiteMap/./node_modules/lodash/_assocIndexOf.js","webpack://GeoLiteMap/./node_modules/lodash/_baseAssign.js","webpack://GeoLiteMap/./node_modules/lodash/_baseAssignIn.js","webpack://GeoLiteMap/./node_modules/lodash/_baseAssignValue.js","webpack://GeoLiteMap/./node_modules/lodash/_baseClone.js","webpack://GeoLiteMap/./node_modules/lodash/_baseCreate.js","webpack://GeoLiteMap/./node_modules/lodash/_baseEach.js","webpack://GeoLiteMap/./node_modules/lodash/_baseFor.js","webpack://GeoLiteMap/./node_modules/lodash/_baseForOwn.js","webpack://GeoLiteMap/./node_modules/lodash/_baseGet.js","webpack://GeoLiteMap/./node_modules/lodash/_baseGetAllKeys.js","webpack://GeoLiteMap/./node_modules/lodash/_baseGetTag.js","webpack://GeoLiteMap/./node_modules/lodash/_baseHasIn.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsArguments.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsEqual.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsEqualDeep.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsMap.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsMatch.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsNative.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsSet.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIsTypedArray.js","webpack://GeoLiteMap/./node_modules/lodash/_baseIteratee.js","webpack://GeoLiteMap/./node_modules/lodash/_baseKeys.js","webpack://GeoLiteMap/./node_modules/lodash/_baseKeysIn.js","webpack://GeoLiteMap/./node_modules/lodash/_baseMap.js","webpack://GeoLiteMap/./node_modules/lodash/_baseMatches.js","webpack://GeoLiteMap/./node_modules/lodash/_baseMatchesProperty.js","webpack://GeoLiteMap/./node_modules/lodash/_baseProperty.js","webpack://GeoLiteMap/./node_modules/lodash/_basePropertyDeep.js","webpack://GeoLiteMap/./node_modules/lodash/_baseTimes.js","webpack://GeoLiteMap/./node_modules/lodash/_baseToString.js","webpack://GeoLiteMap/./node_modules/lodash/_baseUnary.js","webpack://GeoLiteMap/./node_modules/lodash/_cacheHas.js","webpack://GeoLiteMap/./node_modules/lodash/_castFunction.js","webpack://GeoLiteMap/./node_modules/lodash/_castPath.js","webpack://GeoLiteMap/./node_modules/lodash/_cloneArrayBuffer.js","webpack://GeoLiteMap/./node_modules/lodash/_cloneBuffer.js","webpack://GeoLiteMap/./node_modules/lodash/_cloneDataView.js","webpack://GeoLiteMap/./node_modules/lodash/_cloneRegExp.js","webpack://GeoLiteMap/./node_modules/lodash/_cloneSymbol.js","webpack://GeoLiteMap/./node_modules/lodash/_cloneTypedArray.js","webpack://GeoLiteMap/./node_modules/lodash/_copyArray.js","webpack://GeoLiteMap/./node_modules/lodash/_copyObject.js","webpack://GeoLiteMap/./node_modules/lodash/_copySymbols.js","webpack://GeoLiteMap/./node_modules/lodash/_copySymbolsIn.js","webpack://GeoLiteMap/./node_modules/lodash/_coreJsData.js","webpack://GeoLiteMap/./node_modules/lodash/_createBaseEach.js","webpack://GeoLiteMap/./node_modules/lodash/_createBaseFor.js","webpack://GeoLiteMap/./node_modules/lodash/_defineProperty.js","webpack://GeoLiteMap/./node_modules/lodash/_equalArrays.js","webpack://GeoLiteMap/./node_modules/lodash/_equalByTag.js","webpack://GeoLiteMap/./node_modules/lodash/_equalObjects.js","webpack://GeoLiteMap/./node_modules/lodash/_freeGlobal.js","webpack://GeoLiteMap/./node_modules/lodash/_getAllKeys.js","webpack://GeoLiteMap/./node_modules/lodash/_getAllKeysIn.js","webpack://GeoLiteMap/./node_modules/lodash/_getMapData.js","webpack://GeoLiteMap/./node_modules/lodash/_getMatchData.js","webpack://GeoLiteMap/./node_modules/lodash/_getNative.js","webpack://GeoLiteMap/./node_modules/lodash/_getPrototype.js","webpack://GeoLiteMap/./node_modules/lodash/_getRawTag.js","webpack://GeoLiteMap/./node_modules/lodash/_getSymbols.js","webpack://GeoLiteMap/./node_modules/lodash/_getSymbolsIn.js","webpack://GeoLiteMap/./node_modules/lodash/_getTag.js","webpack://GeoLiteMap/./node_modules/lodash/_getValue.js","webpack://GeoLiteMap/./node_modules/lodash/_hasPath.js","webpack://GeoLiteMap/./node_modules/lodash/_hashClear.js","webpack://GeoLiteMap/./node_modules/lodash/_hashDelete.js","webpack://GeoLiteMap/./node_modules/lodash/_hashGet.js","webpack://GeoLiteMap/./node_modules/lodash/_hashHas.js","webpack://GeoLiteMap/./node_modules/lodash/_hashSet.js","webpack://GeoLiteMap/./node_modules/lodash/_initCloneArray.js","webpack://GeoLiteMap/./node_modules/lodash/_initCloneByTag.js","webpack://GeoLiteMap/./node_modules/lodash/_initCloneObject.js","webpack://GeoLiteMap/./node_modules/lodash/_isIndex.js","webpack://GeoLiteMap/./node_modules/lodash/_isKey.js","webpack://GeoLiteMap/./node_modules/lodash/_isKeyable.js","webpack://GeoLiteMap/./node_modules/lodash/_isMasked.js","webpack://GeoLiteMap/./node_modules/lodash/_isPrototype.js","webpack://GeoLiteMap/./node_modules/lodash/_isStrictComparable.js","webpack://GeoLiteMap/./node_modules/lodash/_listCacheClear.js","webpack://GeoLiteMap/./node_modules/lodash/_listCacheDelete.js","webpack://GeoLiteMap/./node_modules/lodash/_listCacheGet.js","webpack://GeoLiteMap/./node_modules/lodash/_listCacheHas.js","webpack://GeoLiteMap/./node_modules/lodash/_listCacheSet.js","webpack://GeoLiteMap/./node_modules/lodash/_mapCacheClear.js","webpack://GeoLiteMap/./node_modules/lodash/_mapCacheDelete.js","webpack://GeoLiteMap/./node_modules/lodash/_mapCacheGet.js","webpack://GeoLiteMap/./node_modules/lodash/_mapCacheHas.js","webpack://GeoLiteMap/./node_modules/lodash/_mapCacheSet.js","webpack://GeoLiteMap/./node_modules/lodash/_mapToArray.js","webpack://GeoLiteMap/./node_modules/lodash/_matchesStrictComparable.js","webpack://GeoLiteMap/./node_modules/lodash/_memoizeCapped.js","webpack://GeoLiteMap/./node_modules/lodash/_nativeCreate.js","webpack://GeoLiteMap/./node_modules/lodash/_nativeKeys.js","webpack://GeoLiteMap/./node_modules/lodash/_nativeKeysIn.js","webpack://GeoLiteMap/./node_modules/lodash/_nodeUtil.js","webpack://GeoLiteMap/./node_modules/lodash/_objectToString.js","webpack://GeoLiteMap/./node_modules/lodash/_overArg.js","webpack://GeoLiteMap/./node_modules/lodash/_root.js","webpack://GeoLiteMap/./node_modules/lodash/_setCacheAdd.js","webpack://GeoLiteMap/./node_modules/lodash/_setCacheHas.js","webpack://GeoLiteMap/./node_modules/lodash/_setToArray.js","webpack://GeoLiteMap/./node_modules/lodash/_stackClear.js","webpack://GeoLiteMap/./node_modules/lodash/_stackDelete.js","webpack://GeoLiteMap/./node_modules/lodash/_stackGet.js","webpack://GeoLiteMap/./node_modules/lodash/_stackHas.js","webpack://GeoLiteMap/./node_modules/lodash/_stackSet.js","webpack://GeoLiteMap/./node_modules/lodash/_stringToPath.js","webpack://GeoLiteMap/./node_modules/lodash/_toKey.js","webpack://GeoLiteMap/./node_modules/lodash/_toSource.js","webpack://GeoLiteMap/./node_modules/lodash/cloneDeep.js","webpack://GeoLiteMap/./node_modules/lodash/eq.js","webpack://GeoLiteMap/./node_modules/lodash/forOwn.js","webpack://GeoLiteMap/./node_modules/lodash/get.js","webpack://GeoLiteMap/./node_modules/lodash/hasIn.js","webpack://GeoLiteMap/./node_modules/lodash/identity.js","webpack://GeoLiteMap/./node_modules/lodash/isArguments.js","webpack://GeoLiteMap/./node_modules/lodash/isArray.js","webpack://GeoLiteMap/./node_modules/lodash/isArrayLike.js","webpack://GeoLiteMap/./node_modules/lodash/isBuffer.js","webpack://GeoLiteMap/./node_modules/lodash/isFunction.js","webpack://GeoLiteMap/./node_modules/lodash/isLength.js","webpack://GeoLiteMap/./node_modules/lodash/isMap.js","webpack://GeoLiteMap/./node_modules/lodash/isObject.js","webpack://GeoLiteMap/./node_modules/lodash/isObjectLike.js","webpack://GeoLiteMap/./node_modules/lodash/isPlainObject.js","webpack://GeoLiteMap/./node_modules/lodash/isSet.js","webpack://GeoLiteMap/./node_modules/lodash/isString.js","webpack://GeoLiteMap/./node_modules/lodash/isSymbol.js","webpack://GeoLiteMap/./node_modules/lodash/isTypedArray.js","webpack://GeoLiteMap/./node_modules/lodash/keys.js","webpack://GeoLiteMap/./node_modules/lodash/keysIn.js","webpack://GeoLiteMap/./node_modules/lodash/map.js","webpack://GeoLiteMap/./node_modules/lodash/memoize.js","webpack://GeoLiteMap/./node_modules/lodash/property.js","webpack://GeoLiteMap/./node_modules/lodash/stubArray.js","webpack://GeoLiteMap/./node_modules/lodash/stubFalse.js","webpack://GeoLiteMap/./node_modules/lodash/toString.js","webpack://GeoLiteMap/./node_modules/object-assign/index.js","webpack://GeoLiteMap/./node_modules/pbf/index.js","webpack://GeoLiteMap/./node_modules/proj4/lib/constants/values.js","webpack://GeoLiteMap/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://GeoLiteMap/./node_modules/proj4/lib/constants/units.js","webpack://GeoLiteMap/./node_modules/proj4/lib/match.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projString.js","webpack://GeoLiteMap/./node_modules/wkt-parser/parser.js","webpack://GeoLiteMap/./node_modules/wkt-parser/process.js","webpack://GeoLiteMap/./node_modules/wkt-parser/index.js","webpack://GeoLiteMap/./node_modules/proj4/lib/defs.js","webpack://GeoLiteMap/./node_modules/proj4/lib/global.js","webpack://GeoLiteMap/./node_modules/proj4/lib/parseCode.js","webpack://GeoLiteMap/./node_modules/proj4/lib/extend.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/msfnz.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/sign.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/adjust_lon.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/tsfnz.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/phi2z.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/longlat.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/merc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://GeoLiteMap/./node_modules/proj4/lib/constants/Datum.js","webpack://GeoLiteMap/./node_modules/proj4/lib/nadgrid.js","webpack://GeoLiteMap/./node_modules/proj4/lib/Proj.js","webpack://GeoLiteMap/./node_modules/proj4/lib/deriveConstants.js","webpack://GeoLiteMap/./node_modules/proj4/lib/datum.js","webpack://GeoLiteMap/./node_modules/proj4/lib/datumUtils.js","webpack://GeoLiteMap/./node_modules/proj4/lib/datum_transform.js","webpack://GeoLiteMap/./node_modules/proj4/lib/adjust_axis.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/toPoint.js","webpack://GeoLiteMap/./node_modules/proj4/lib/checkSanity.js","webpack://GeoLiteMap/./node_modules/proj4/lib/transform.js","webpack://GeoLiteMap/./node_modules/proj4/lib/core.js","webpack://GeoLiteMap/./node_modules/mgrs/mgrs.js","webpack://GeoLiteMap/./node_modules/proj4/lib/Point.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/pj_enfn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/tmerc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/sinh.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/hypot.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/gatg.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/clens_cmplx.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/cosh.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/etmerc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/clens.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/asinhy.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/log1py.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/utm.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/adjust_zone.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/srat.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/gauss.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/sterea.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/stere.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/somerc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/omerc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/lcc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/krovak.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/mlfn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/e0fn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/e1fn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/e2fn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/e3fn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/gN.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/adjust_lat.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/imlfn.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/cass.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/qsfnz.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/laea.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/asinz.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/aea.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/gnom.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/cea.js","webpack://GeoLiteMap/./node_modules/proj4/lib/common/iqsfnz.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/eqc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/poly.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/nzmg.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/mill.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/sinu.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/moll.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/eqdc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/vandg.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/aeqd.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/ortho.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/qsc.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/robin.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/geocent.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/tpers.js","webpack://GeoLiteMap/./node_modules/proj4/lib/projections/geos.js","webpack://GeoLiteMap/./node_modules/proj4/projs.js","webpack://GeoLiteMap/./node_modules/proj4/lib/index.js","webpack://GeoLiteMap/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://GeoLiteMap/./node_modules/prop-types/index.js","webpack://GeoLiteMap/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://GeoLiteMap/./node_modules/rbush/rbush.min.js","webpack://GeoLiteMap/./node_modules/react-color/es/helpers/checkboard.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/Checkboard.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/Alpha.js","webpack://GeoLiteMap/./node_modules/react-color/es/helpers/alpha.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/EditableInput.js","webpack://GeoLiteMap/./node_modules/react-color/es/helpers/hue.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/Hue.js","webpack://GeoLiteMap/./node_modules/lodash-es/_listCacheClear.js","webpack://GeoLiteMap/./node_modules/lodash-es/eq.js","webpack://GeoLiteMap/./node_modules/lodash-es/_assocIndexOf.js","webpack://GeoLiteMap/./node_modules/lodash-es/_listCacheDelete.js","webpack://GeoLiteMap/./node_modules/lodash-es/_ListCache.js","webpack://GeoLiteMap/./node_modules/lodash-es/_listCacheGet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_listCacheHas.js","webpack://GeoLiteMap/./node_modules/lodash-es/_listCacheSet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_freeGlobal.js","webpack://GeoLiteMap/./node_modules/lodash-es/_root.js","webpack://GeoLiteMap/./node_modules/lodash-es/_Symbol.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getRawTag.js","webpack://GeoLiteMap/./node_modules/lodash-es/_objectToString.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseGetTag.js","webpack://GeoLiteMap/./node_modules/lodash-es/isObject.js","webpack://GeoLiteMap/./node_modules/lodash-es/isFunction.js","webpack://GeoLiteMap/./node_modules/lodash-es/_coreJsData.js","webpack://GeoLiteMap/./node_modules/lodash-es/_isMasked.js","webpack://GeoLiteMap/./node_modules/lodash-es/_toSource.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseIsNative.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getNative.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getValue.js","webpack://GeoLiteMap/./node_modules/lodash-es/_Map.js","webpack://GeoLiteMap/./node_modules/lodash-es/_nativeCreate.js","webpack://GeoLiteMap/./node_modules/lodash-es/_hashGet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_hashHas.js","webpack://GeoLiteMap/./node_modules/lodash-es/_Hash.js","webpack://GeoLiteMap/./node_modules/lodash-es/_hashClear.js","webpack://GeoLiteMap/./node_modules/lodash-es/_hashDelete.js","webpack://GeoLiteMap/./node_modules/lodash-es/_hashSet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getMapData.js","webpack://GeoLiteMap/./node_modules/lodash-es/_isKeyable.js","webpack://GeoLiteMap/./node_modules/lodash-es/_MapCache.js","webpack://GeoLiteMap/./node_modules/lodash-es/_mapCacheClear.js","webpack://GeoLiteMap/./node_modules/lodash-es/_mapCacheDelete.js","webpack://GeoLiteMap/./node_modules/lodash-es/_mapCacheGet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_mapCacheHas.js","webpack://GeoLiteMap/./node_modules/lodash-es/_mapCacheSet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_Stack.js","webpack://GeoLiteMap/./node_modules/lodash-es/_stackClear.js","webpack://GeoLiteMap/./node_modules/lodash-es/_stackDelete.js","webpack://GeoLiteMap/./node_modules/lodash-es/_stackGet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_stackHas.js","webpack://GeoLiteMap/./node_modules/lodash-es/_stackSet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_defineProperty.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseAssignValue.js","webpack://GeoLiteMap/./node_modules/lodash-es/_assignMergeValue.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseFor.js","webpack://GeoLiteMap/./node_modules/lodash-es/_createBaseFor.js","webpack://GeoLiteMap/./node_modules/lodash-es/_cloneBuffer.js","webpack://GeoLiteMap/./node_modules/lodash-es/_Uint8Array.js","webpack://GeoLiteMap/./node_modules/lodash-es/_cloneTypedArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseCreate.js","webpack://GeoLiteMap/./node_modules/lodash-es/_overArg.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getPrototype.js","webpack://GeoLiteMap/./node_modules/lodash-es/_isPrototype.js","webpack://GeoLiteMap/./node_modules/lodash-es/isObjectLike.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseIsArguments.js","webpack://GeoLiteMap/./node_modules/lodash-es/isArguments.js","webpack://GeoLiteMap/./node_modules/lodash-es/isArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/isLength.js","webpack://GeoLiteMap/./node_modules/lodash-es/isArrayLike.js","webpack://GeoLiteMap/./node_modules/lodash-es/isBuffer.js","webpack://GeoLiteMap/./node_modules/lodash-es/stubFalse.js","webpack://GeoLiteMap/./node_modules/lodash-es/isPlainObject.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/_nodeUtil.js","webpack://GeoLiteMap/./node_modules/lodash-es/isTypedArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseUnary.js","webpack://GeoLiteMap/./node_modules/lodash-es/_safeGet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_assignValue.js","webpack://GeoLiteMap/./node_modules/lodash-es/_isIndex.js","webpack://GeoLiteMap/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseTimes.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseKeysIn.js","webpack://GeoLiteMap/./node_modules/lodash-es/_nativeKeysIn.js","webpack://GeoLiteMap/./node_modules/lodash-es/keysIn.js","webpack://GeoLiteMap/./node_modules/lodash-es/toPlainObject.js","webpack://GeoLiteMap/./node_modules/lodash-es/_copyObject.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseMergeDeep.js","webpack://GeoLiteMap/./node_modules/lodash-es/isArrayLikeObject.js","webpack://GeoLiteMap/./node_modules/lodash-es/_copyArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/_initCloneObject.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseMerge.js","webpack://GeoLiteMap/./node_modules/lodash-es/identity.js","webpack://GeoLiteMap/./node_modules/lodash-es/_overRest.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseSetToString.js","webpack://GeoLiteMap/./node_modules/lodash-es/constant.js","webpack://GeoLiteMap/./node_modules/lodash-es/_shortOut.js","webpack://GeoLiteMap/./node_modules/lodash-es/_setToString.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseRest.js","webpack://GeoLiteMap/./node_modules/lodash-es/_apply.js","webpack://GeoLiteMap/./node_modules/lodash-es/merge.js","webpack://GeoLiteMap/./node_modules/lodash-es/_createAssigner.js","webpack://GeoLiteMap/./node_modules/lodash-es/_isIterateeCall.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/Raised.js","webpack://GeoLiteMap/./node_modules/lodash-es/now.js","webpack://GeoLiteMap/./node_modules/lodash-es/_trimmedEndIndex.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseTrim.js","webpack://GeoLiteMap/./node_modules/lodash-es/isSymbol.js","webpack://GeoLiteMap/./node_modules/lodash-es/toNumber.js","webpack://GeoLiteMap/./node_modules/lodash-es/debounce.js","webpack://GeoLiteMap/./node_modules/react-color/es/helpers/saturation.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/Saturation.js","webpack://GeoLiteMap/./node_modules/lodash-es/throttle.js","webpack://GeoLiteMap/./node_modules/lodash-es/_arrayEach.js","webpack://GeoLiteMap/./node_modules/lodash-es/_nativeKeys.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseKeys.js","webpack://GeoLiteMap/./node_modules/lodash-es/keys.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseEach.js","webpack://GeoLiteMap/./node_modules/lodash-es/_createBaseEach.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseForOwn.js","webpack://GeoLiteMap/./node_modules/lodash-es/forEach.js","webpack://GeoLiteMap/./node_modules/lodash-es/_castFunction.js","webpack://GeoLiteMap/./node_modules/tinycolor2/esm/tinycolor.js","webpack://GeoLiteMap/./node_modules/react-color/es/helpers/color.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/ColorWrap.js","webpack://GeoLiteMap/./node_modules/react-color/es/helpers/interaction.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/common/Swatch.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/alpha/Alpha.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/alpha/AlphaPointer.js","webpack://GeoLiteMap/./node_modules/lodash-es/_arrayMap.js","webpack://GeoLiteMap/./node_modules/lodash-es/_SetCache.js","webpack://GeoLiteMap/./node_modules/lodash-es/_setCacheAdd.js","webpack://GeoLiteMap/./node_modules/lodash-es/_setCacheHas.js","webpack://GeoLiteMap/./node_modules/lodash-es/_arraySome.js","webpack://GeoLiteMap/./node_modules/lodash-es/_equalArrays.js","webpack://GeoLiteMap/./node_modules/lodash-es/_cacheHas.js","webpack://GeoLiteMap/./node_modules/lodash-es/_mapToArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/_setToArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/_equalByTag.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getSymbols.js","webpack://GeoLiteMap/./node_modules/lodash-es/_arrayFilter.js","webpack://GeoLiteMap/./node_modules/lodash-es/stubArray.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getAllKeys.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://GeoLiteMap/./node_modules/lodash-es/_arrayPush.js","webpack://GeoLiteMap/./node_modules/lodash-es/_equalObjects.js","webpack://GeoLiteMap/./node_modules/lodash-es/_DataView.js","webpack://GeoLiteMap/./node_modules/lodash-es/_Promise.js","webpack://GeoLiteMap/./node_modules/lodash-es/_Set.js","webpack://GeoLiteMap/./node_modules/lodash-es/_WeakMap.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getTag.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseIsEqual.js","webpack://GeoLiteMap/./node_modules/lodash-es/_isStrictComparable.js","webpack://GeoLiteMap/./node_modules/lodash-es/_matchesStrictComparable.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseMatches.js","webpack://GeoLiteMap/./node_modules/lodash-es/_getMatchData.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseIsMatch.js","webpack://GeoLiteMap/./node_modules/lodash-es/_isKey.js","webpack://GeoLiteMap/./node_modules/lodash-es/memoize.js","webpack://GeoLiteMap/./node_modules/lodash-es/_stringToPath.js","webpack://GeoLiteMap/./node_modules/lodash-es/_memoizeCapped.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseToString.js","webpack://GeoLiteMap/./node_modules/lodash-es/toString.js","webpack://GeoLiteMap/./node_modules/lodash-es/_castPath.js","webpack://GeoLiteMap/./node_modules/lodash-es/_toKey.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseGet.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseHasIn.js","webpack://GeoLiteMap/./node_modules/lodash-es/hasIn.js","webpack://GeoLiteMap/./node_modules/lodash-es/_hasPath.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseMatchesProperty.js","webpack://GeoLiteMap/./node_modules/lodash-es/get.js","webpack://GeoLiteMap/./node_modules/lodash-es/property.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseProperty.js","webpack://GeoLiteMap/./node_modules/lodash-es/_basePropertyDeep.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseMap.js","webpack://GeoLiteMap/./node_modules/lodash-es/map.js","webpack://GeoLiteMap/./node_modules/lodash-es/_baseIteratee.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/block/BlockSwatches.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/block/Block.js","webpack://GeoLiteMap/./node_modules/material-colors/dist/colors.es2015.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/circle/CircleSwatch.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/circle/Circle.js","webpack://GeoLiteMap/./node_modules/lodash-es/isUndefined.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/chrome/ChromeFields.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/chrome/ChromePointer.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/chrome/ChromePointerCircle.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/chrome/Chrome.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/compact/CompactColor.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/compact/CompactFields.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/compact/Compact.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/github/GithubSwatch.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/github/Github.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/hue/Hue.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/hue/HuePointer.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/material/Material.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/photoshop/PhotoshopFields.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/photoshop/PhotoshopPointerCircle.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/photoshop/PhotoshopPointer.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/photoshop/PhotoshopButton.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/photoshop/PhotoshopPreviews.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/photoshop/Photoshop.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/sketch/SketchFields.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/sketch/SketchPresetColors.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/sketch/Sketch.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/slider/SliderSwatch.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/slider/SliderSwatches.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/slider/Slider.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/slider/SliderPointer.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/swatches/SwatchesColor.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/swatches/SwatchesGroup.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/swatches/Swatches.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/twitter/Twitter.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/google/GooglePointerCircle.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/google/GooglePointer.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/google/GoogleFields.js","webpack://GeoLiteMap/./node_modules/react-color/es/components/google/Google.js","webpack://GeoLiteMap/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://GeoLiteMap/./node_modules/react-dom/index.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/Draggable.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/DraggableCore.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/cjs.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/utils/domFns.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/utils/log.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack://GeoLiteMap/./node_modules/react-draggable/build/cjs/utils/shims.js","webpack://GeoLiteMap/./node_modules/react-image-gallery/build/image-gallery.js","webpack://GeoLiteMap/./node_modules/react/cjs/react.production.min.js","webpack://GeoLiteMap/./node_modules/react/index.js","webpack://GeoLiteMap/./node_modules/reactcss/lib/autoprefix.js","webpack://GeoLiteMap/./node_modules/reactcss/lib/components/active.js","webpack://GeoLiteMap/./node_modules/reactcss/lib/components/hover.js","webpack://GeoLiteMap/./node_modules/reactcss/lib/flattenNames.js","webpack://GeoLiteMap/./node_modules/reactcss/lib/index.js","webpack://GeoLiteMap/./node_modules/reactcss/lib/loop.js","webpack://GeoLiteMap/./node_modules/reactcss/lib/mergeClasses.js","webpack://GeoLiteMap/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://GeoLiteMap/./node_modules/scheduler/index.js","webpack://GeoLiteMap/./src/Contexts/AppContext.tsx","webpack://GeoLiteMap/./src/Contexts/BaseMapContext.tsx","webpack://GeoLiteMap/./src/Contexts/ConvertContext.tsx","webpack://GeoLiteMap/./src/Contexts/DrawingContext.tsx","webpack://GeoLiteMap/./src/Contexts/IdentifyContext.tsx","webpack://GeoLiteMap/./src/Contexts/LayersContext.tsx","webpack://GeoLiteMap/./src/Contexts/MapContext.tsx","webpack://GeoLiteMap/./src/Contexts/MapDownloadContext.tsx","webpack://GeoLiteMap/./src/Contexts/PrintContext.tsx","webpack://GeoLiteMap/./src/Contexts/SearchContext.tsx","webpack://GeoLiteMap/./src/Contexts/WmsContext.tsx","webpack://GeoLiteMap/./src/Elements/Accordion.tsx","webpack://GeoLiteMap/./src/Elements/Checkbox.tsx","webpack://GeoLiteMap/./src/Elements/CloseButton.tsx","webpack://GeoLiteMap/./src/Elements/PopupButton.tsx","webpack://GeoLiteMap/./src/Elements/Select.tsx","webpack://GeoLiteMap/./src/Elements/Toast.tsx","webpack://GeoLiteMap/./src/Elements/ToggleSwitch.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/BaseMapButton.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/BaseMapItem.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/BasemapTools.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/BasemapWidget.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/BasemapsSelectorPopup.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/ChildMapsPopup.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/DragButton.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/OpacityControl.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/SplitControl.tsx","webpack://GeoLiteMap/./src/Map/Basemaps/SubBaseMapItem.tsx","webpack://GeoLiteMap/./src/Map/Bookmarks/Bookmark.tsx","webpack://GeoLiteMap/./src/Map/Bookmarks/BookmarkList.tsx","webpack://GeoLiteMap/./src/Map/Bookmarks/BookmarksWidget.tsx","webpack://GeoLiteMap/./src/Map/Bookmarks/snapshot.ts","webpack://GeoLiteMap/./src/Map/Buttons/Attribution.tsx","webpack://GeoLiteMap/./src/Map/Buttons/GeoLocation.tsx","webpack://GeoLiteMap/./src/Map/Buttons/Home.tsx","webpack://GeoLiteMap/./src/Map/Convert/ConvertWidget.tsx","webpack://GeoLiteMap/./src/Map/Convert/CoordSystemSelect.tsx","webpack://GeoLiteMap/./src/Map/Convert/CoordinateInput.tsx","webpack://GeoLiteMap/./src/Map/Convert/ShareLocation.tsx","webpack://GeoLiteMap/./src/Map/Convert/WidgetWarning.tsx","webpack://GeoLiteMap/./src/Map/Coordinates/AdvancedDropdown.tsx","webpack://GeoLiteMap/./src/Map/Coordinates/CoordinateUtils.ts","webpack://GeoLiteMap/./src/Map/Coordinates/CoordinateWidget.tsx","webpack://GeoLiteMap/./src/Map/Coordinates/DropdownList.tsx","webpack://GeoLiteMap/./src/Map/Coordinates/ShrinkCoordsButton.tsx","webpack://GeoLiteMap/./src/Map/Drawing/ColorButton.tsx","webpack://GeoLiteMap/./src/Map/Drawing/Colors.tsx","webpack://GeoLiteMap/./src/Map/Drawing/Draw.tsx","webpack://GeoLiteMap/./src/Map/Drawing/DrawingToolbar.tsx","webpack://GeoLiteMap/./src/Map/Drawing/DrawingWidget.tsx","webpack://GeoLiteMap/./src/Map/Drawing/DrawnItems.tsx","webpack://GeoLiteMap/./src/Map/Drawing/SketchProps.tsx","webpack://GeoLiteMap/./src/Map/Export/Export.tsx","webpack://GeoLiteMap/./src/Map/Export/exportFunctions.ts","webpack://GeoLiteMap/./src/Map/Gallery/Gallery.tsx","webpack://GeoLiteMap/./src/Map/Gallery/imageProvider.ts","webpack://GeoLiteMap/./src/Map/GeoLiteMap.tsx","webpack://GeoLiteMap/./src/Map/Identify/Attributes.tsx","webpack://GeoLiteMap/./src/Map/Identify/ExpandablePanel.tsx","webpack://GeoLiteMap/./src/Map/Identify/FeatureInfo.tsx","webpack://GeoLiteMap/./src/Map/Identify/Identify.tsx","webpack://GeoLiteMap/./src/Map/Identify/IdentifyPopup.tsx","webpack://GeoLiteMap/./src/Map/Identify/IdentifyResults.tsx","webpack://GeoLiteMap/./src/Map/Identify/ResultFeatureInfo.tsx","webpack://GeoLiteMap/./src/Map/Identify/TitleRow.tsx","webpack://GeoLiteMap/./src/Map/Identify/identifyUtils.ts","webpack://GeoLiteMap/./src/Map/Identify/identifyWmsBasemap.ts","webpack://GeoLiteMap/./src/Map/Import/Import.tsx","webpack://GeoLiteMap/./src/Map/Import/gpx.ts","webpack://GeoLiteMap/./src/Map/Import/kml.ts","webpack://GeoLiteMap/./src/Map/Import/zipUtils.ts","webpack://GeoLiteMap/./src/Map/Logos/SideLogo.tsx","webpack://GeoLiteMap/./src/Map/Logos/UpperLogo.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/Authorization.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/CustomerInfo.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/MapDownloadWidget.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/MapSelect.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/PolygonSelect.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/SelectedSheets.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/SheetDownload.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/SheetSearch.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/SheetSelector.tsx","webpack://GeoLiteMap/./src/Map/MapDownload/Token.ts","webpack://GeoLiteMap/./src/Map/News/NewsPopup.tsx","webpack://GeoLiteMap/./src/Map/Print/PrintFrame.tsx","webpack://GeoLiteMap/./src/Map/Print/PrintOptions.tsx","webpack://GeoLiteMap/./src/Map/Print/PrintResult.tsx","webpack://GeoLiteMap/./src/Map/Print/PrintWidget.tsx","webpack://GeoLiteMap/./src/Map/Print/printTools.ts","webpack://GeoLiteMap/./src/Map/Scale/ScaleWidget.tsx","webpack://GeoLiteMap/./src/Map/Search/FeatureGroup.tsx","webpack://GeoLiteMap/./src/Map/Search/FeatureList.tsx","webpack://GeoLiteMap/./src/Map/Search/SearchGroup.tsx","webpack://GeoLiteMap/./src/Map/Search/SearchHelp.tsx","webpack://GeoLiteMap/./src/Map/Search/SearchInput.tsx","webpack://GeoLiteMap/./src/Map/Search/SearchResults.tsx","webpack://GeoLiteMap/./src/Map/Search/SearchUtils.ts","webpack://GeoLiteMap/./src/Map/Search/SearchWidget.tsx","webpack://GeoLiteMap/./src/Map/Search/searchQueries.ts","webpack://GeoLiteMap/./src/Map/Symbols/clusterSymbols.ts","webpack://GeoLiteMap/./src/Map/Symbols/measureSymbols.ts","webpack://GeoLiteMap/./src/Map/Symbols/symbols.ts","webpack://GeoLiteMap/./src/Map/Toc/GroupVisibilityButton.tsx","webpack://GeoLiteMap/./src/Map/Toc/MenuImage.tsx","webpack://GeoLiteMap/./src/Map/Toc/MenuItem.tsx","webpack://GeoLiteMap/./src/Map/Toc/SubIcons.tsx","webpack://GeoLiteMap/./src/Map/Toc/SubLegends.tsx","webpack://GeoLiteMap/./src/Map/Toc/TocWidget.tsx","webpack://GeoLiteMap/./src/Map/Toc/helpers.ts","webpack://GeoLiteMap/./src/Map/Toolbar/Toolbar.tsx","webpack://GeoLiteMap/./src/Map/Toolbar/ToolbarButton.tsx","webpack://GeoLiteMap/./src/Map/Toolbar/ToolbarSelect.tsx","webpack://GeoLiteMap/./src/Map/Tooltip/Tooltip.tsx","webpack://GeoLiteMap/./src/Map/WMS/WmsAddition.tsx","webpack://GeoLiteMap/./src/Map/WMS/WmsInput.tsx","webpack://GeoLiteMap/./src/Map/WMS/WmsLayers.tsx","webpack://GeoLiteMap/./src/Map/Widget/WidgetInput.tsx","webpack://GeoLiteMap/./src/Map/Widget/WidgetPopup.tsx","webpack://GeoLiteMap/./src/Map/Widget/WidgetToolbar.tsx","webpack://GeoLiteMap/./src/Map/Widget/WidgetToolbarButton.tsx","webpack://GeoLiteMap/./src/Map/basemapFunctions.ts","webpack://GeoLiteMap/./src/Map/clusterAnimation.ts","webpack://GeoLiteMap/./src/Map/clusterFunctions.ts","webpack://GeoLiteMap/./src/Map/config.ts","webpack://GeoLiteMap/./src/Map/enums.ts","webpack://GeoLiteMap/./src/Map/i18n.ts","webpack://GeoLiteMap/./src/Map/layerFunctions.ts","webpack://GeoLiteMap/./src/Map/mapFunctions.ts","webpack://GeoLiteMap/./src/Map/rest.ts","webpack://GeoLiteMap/./src/Map/useMap.ts","webpack://GeoLiteMap/./src/Map/utils.ts","webpack://GeoLiteMap/./src/Popups/HelpPopup.tsx","webpack://GeoLiteMap/./src/Popups/Info/Info.tsx","webpack://GeoLiteMap/./src/Popups/Info/InfoButton.tsx","webpack://GeoLiteMap/./src/Popups/Popup.tsx","webpack://GeoLiteMap/./src/Popups/PopupHeaderButton.tsx","webpack://GeoLiteMap/./src/Popups/Portal.tsx","webpack://GeoLiteMap/./src/Providers/mapProvider.tsx","webpack://GeoLiteMap/./src/geolite-map.ts","webpack://GeoLiteMap/./src/renderMap.tsx","webpack://GeoLiteMap/./node_modules/void-elements/index.js","webpack://GeoLiteMap/./node_modules/xml-utils/count-substring.js","webpack://GeoLiteMap/./node_modules/xml-utils/find-tag-by-name.js","webpack://GeoLiteMap/./node_modules/xml-utils/find-tags-by-name.js","webpack://GeoLiteMap/./node_modules/xml-utils/get-attribute.js","webpack://GeoLiteMap/./node_modules/xml-utils/index-of-match-end.js","webpack://GeoLiteMap/./node_modules/xml-utils/index-of-match.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/createClass.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/inherits.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/toArray.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/typeof.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://GeoLiteMap/./node_modules/i18next-http-backend/cjs/getFetch.js","webpack://GeoLiteMap/./node_modules/i18next-http-backend/cjs/index.js","webpack://GeoLiteMap/./node_modules/i18next-http-backend/cjs/request.js","webpack://GeoLiteMap/./node_modules/i18next-http-backend/cjs/utils.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/globals.js","webpack://GeoLiteMap/./node_modules/jsts/hasInterface.js","webpack://GeoLiteMap/./node_modules/jsts/java/io/Serializable.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/Character.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/Cloneable.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/Comparable.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/Long.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/Double.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/Exception.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/IllegalArgumentException.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/IllegalStateException.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/IndexOutOfBoundsException.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/Integer.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/RuntimeException.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/StringBuffer.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/StringBuilder.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/System.js","webpack://GeoLiteMap/./node_modules/jsts/java/lang/UnsupportedOperationException.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/ArrayList.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Arrays.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Collection.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Comparator.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/HashSet.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/List.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Map.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/NoSuchElementException.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Set.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/CGAlgorithmsDD.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/Orientation.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/util/NumberUtil.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Coordinate.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateArrays.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateFilter.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateList.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequence.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequenceFilter.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequences.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateXY.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateXYM.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateXYZM.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Coordinates.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Dimension.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Envelope.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Geometry.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/SortedSet.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/TreeSet.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryCollection.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryComponentFilter.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequenceFactory.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/impl/CoordinateArraySequenceFactory.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryFactory.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryFilter.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/Length.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/LineString.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Lineal.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/LinearRing.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/MultiLineString.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/MultiPoint.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/MultiPolygon.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Point.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/Area.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Polygon.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Polygonal.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/HashMap.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/PrecisionModel.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Puntal.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/impl/CoordinateArraySequence.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/io/GeoJSONParser.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/io/GeoJSONReader.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/io/GeoJSONWriter.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/io/WKTReader.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/io/OL3Parser.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/io/WKTParser.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/io/WKTWriter.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/math/DD.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/math/MathUtil.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferParameters.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentPointComparator.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentNode.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/SortedMap.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/TreeMap.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentNodeList.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/Octant.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentString.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/NodableSegmentString.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/NodedSegmentString.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/Noder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/ScaledNoder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/TopologyException.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/Intersection.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/Distance.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/LineIntersector.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/RobustLineIntersector.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/NodingValidator.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/Boundable.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/ItemBoundable.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/util/PriorityQueue.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/SpatialIndex.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/AbstractNode.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Collections.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/EnvelopeDistance.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/BoundablePair.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/ItemVisitor.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/AbstractSTRtree.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/ItemDistance.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/strtree/STRtree.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/LineSegment.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainOverlapAction.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChain.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Quadrant.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainBuilder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/SinglePassNoder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/MCIndexNoder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/snapround/HotPixel.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainSelectAction.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/snapround/MCIndexPointSnapper.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentIntersector.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/InteriorIntersectionFinderAdder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/snapround/MCIndexSnapRounder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Location.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Position.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/EmptyStackException.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Stack.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/RightmostEdgeFinder.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/LinkedList.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferSubgraph.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferInputLineSimplifier.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetSegmentString.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/Angle.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetSegmentGenerator.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetCurveBuilder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/TopologyLocation.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Label.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/GraphComponent.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Node.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/NodeMap.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/NodeFactory.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeEnd.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/DirectedEdge.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/PlanarGraph.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/RayCrossingCounter.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/PointLocation.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeRing.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/MinimalEdgeRing.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/MaximalEdgeRing.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/PolygonBuilder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/SubgraphDepthLocater.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/NotRepresentableException.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/HCoordinate.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/Triangle.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetCurveSetBuilder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/locate/PointOnGeometryLocator.js","webpack://GeoLiteMap/./node_modules/jsts/java/util/Iterator.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryCollectionIterator.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/algorithm/locate/SimplePointInAreaLocator.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeEndStar.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/DirectedEdgeStar.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/OverlayNodeFactory.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/OrientedCoordinateArray.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeList.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/noding/IntersectionAdder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeIntersection.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeIntersectionList.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geom/IntersectionMatrix.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Depth.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/util/IntArrayList.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/index/MonotoneChainIndexer.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/index/MonotoneChainEdge.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Edge.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferBuilder.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferOp.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/util/AssertionFailedException.js","webpack://GeoLiteMap/./node_modules/jsts/org/locationtech/jts/util/Assert.js","webpack://GeoLiteMap/./node_modules/ol/AssertionError.js","webpack://GeoLiteMap/./node_modules/ol/Collection.js","webpack://GeoLiteMap/./node_modules/ol/CollectionEventType.js","webpack://GeoLiteMap/./node_modules/ol/DataTile.js","webpack://GeoLiteMap/./node_modules/ol/Disposable.js","webpack://GeoLiteMap/./node_modules/ol/Feature.js","webpack://GeoLiteMap/./node_modules/ol/Image.js","webpack://GeoLiteMap/./node_modules/ol/ImageBase.js","webpack://GeoLiteMap/./node_modules/ol/ImageCanvas.js","webpack://GeoLiteMap/./node_modules/ol/ImageState.js","webpack://GeoLiteMap/./node_modules/ol/ImageTile.js","webpack://GeoLiteMap/./node_modules/ol/Kinetic.js","webpack://GeoLiteMap/./node_modules/ol/renderer/Map.js","webpack://GeoLiteMap/./node_modules/ol/renderer/Composite.js","webpack://GeoLiteMap/./node_modules/ol/Map.js","webpack://GeoLiteMap/./node_modules/ol/MapBrowserEvent.js","webpack://GeoLiteMap/./node_modules/ol/MapBrowserEventHandler.js","webpack://GeoLiteMap/./node_modules/ol/MapBrowserEventType.js","webpack://GeoLiteMap/./node_modules/ol/MapEvent.js","webpack://GeoLiteMap/./node_modules/ol/MapEventType.js","webpack://GeoLiteMap/./node_modules/ol/MapProperty.js","webpack://GeoLiteMap/./node_modules/ol/Object.js","webpack://GeoLiteMap/./node_modules/ol/ObjectEventType.js","webpack://GeoLiteMap/./node_modules/ol/Observable.js","webpack://GeoLiteMap/./node_modules/ol/Overlay.js","webpack://GeoLiteMap/./node_modules/ol/Tile.js","webpack://GeoLiteMap/./node_modules/ol/TileCache.js","webpack://GeoLiteMap/./node_modules/ol/structs/PriorityQueue.js","webpack://GeoLiteMap/./node_modules/ol/TileQueue.js","webpack://GeoLiteMap/./node_modules/ol/TileRange.js","webpack://GeoLiteMap/./node_modules/ol/TileState.js","webpack://GeoLiteMap/./node_modules/ol/VectorRenderTile.js","webpack://GeoLiteMap/./node_modules/ol/VectorTile.js","webpack://GeoLiteMap/./node_modules/ol/centerconstraint.js","webpack://GeoLiteMap/./node_modules/ol/resolutionconstraint.js","webpack://GeoLiteMap/./node_modules/ol/View.js","webpack://GeoLiteMap/./node_modules/ol/ViewHint.js","webpack://GeoLiteMap/./node_modules/ol/ViewProperty.js","webpack://GeoLiteMap/./node_modules/ol/array.js","webpack://GeoLiteMap/./node_modules/ol/asserts.js","webpack://GeoLiteMap/./node_modules/ol/color.js","webpack://GeoLiteMap/./node_modules/ol/colorlike.js","webpack://GeoLiteMap/./node_modules/ol/console.js","webpack://GeoLiteMap/./node_modules/ol/control/FullScreen.js","webpack://GeoLiteMap/./node_modules/ol/control/MousePosition.js","webpack://GeoLiteMap/./node_modules/ol/control/OverviewMap.js","webpack://GeoLiteMap/./node_modules/ol/control/ScaleLine.js","webpack://GeoLiteMap/./node_modules/ol/control/ZoomSlider.js","webpack://GeoLiteMap/./node_modules/ol/control/ZoomToExtent.js","webpack://GeoLiteMap/./node_modules/ol/control/Attribution.js","webpack://GeoLiteMap/./node_modules/ol/control/Control.js","webpack://GeoLiteMap/./node_modules/ol/control/Rotate.js","webpack://GeoLiteMap/./node_modules/ol/control/Zoom.js","webpack://GeoLiteMap/./node_modules/ol/control/defaults.js","webpack://GeoLiteMap/./node_modules/ol/coordinate.js","webpack://GeoLiteMap/./node_modules/ol/css.js","webpack://GeoLiteMap/./node_modules/ol/dom.js","webpack://GeoLiteMap/./node_modules/ol/easing.js","webpack://GeoLiteMap/./node_modules/ol/events.js","webpack://GeoLiteMap/./node_modules/ol/events/Event.js","webpack://GeoLiteMap/./node_modules/ol/events/EventType.js","webpack://GeoLiteMap/./node_modules/ol/events/Target.js","webpack://GeoLiteMap/./node_modules/ol/events/condition.js","webpack://GeoLiteMap/./node_modules/ol/extent.js","webpack://GeoLiteMap/./node_modules/ol/extent/Relationship.js","webpack://GeoLiteMap/./node_modules/ol/featureloader.js","webpack://GeoLiteMap/./node_modules/ol/format/EsriJSON.js","webpack://GeoLiteMap/./node_modules/ol/xml.js","webpack://GeoLiteMap/./node_modules/ol/format/XMLFeature.js","webpack://GeoLiteMap/./node_modules/ol/format/GMLBase.js","webpack://GeoLiteMap/./node_modules/ol/format/xsd.js","webpack://GeoLiteMap/./node_modules/ol/format/GML2.js","webpack://GeoLiteMap/./node_modules/ol/format/GML3.js","webpack://GeoLiteMap/./node_modules/ol/format/GML.js","webpack://GeoLiteMap/./node_modules/ol/format/GPX.js","webpack://GeoLiteMap/./node_modules/ol/format/TextFeature.js","webpack://GeoLiteMap/./node_modules/ol/format/IGC.js","webpack://GeoLiteMap/./node_modules/ol/format/KML.js","webpack://GeoLiteMap/./node_modules/ol/format/XML.js","webpack://GeoLiteMap/./node_modules/ol/format/xlink.js","webpack://GeoLiteMap/./node_modules/ol/format/OWS.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/flip.js","webpack://GeoLiteMap/./node_modules/ol/format/Polyline.js","webpack://GeoLiteMap/./node_modules/ol/format/TopoJSON.js","webpack://GeoLiteMap/./node_modules/ol/format/GML32.js","webpack://GeoLiteMap/./node_modules/ol/format/filter/Filter.js","webpack://GeoLiteMap/./node_modules/ol/format/filter/LogicalNary.js","webpack://GeoLiteMap/./node_modules/ol/format/filter/And.js","webpack://GeoLiteMap/./node_modules/ol/format/filter/Bbox.js","webpack://GeoLiteMap/./node_modules/ol/format/WFS.js","webpack://GeoLiteMap/./node_modules/ol/format/filter.js","webpack://GeoLiteMap/./node_modules/ol/format/WKB.js","webpack://GeoLiteMap/./node_modules/ol/format/WKT.js","webpack://GeoLiteMap/./node_modules/ol/format/WMSCapabilities.js","webpack://GeoLiteMap/./node_modules/ol/format/WMSGetFeatureInfo.js","webpack://GeoLiteMap/./node_modules/ol/format/WMTSCapabilities.js","webpack://GeoLiteMap/./node_modules/ol/format/Feature.js","webpack://GeoLiteMap/./node_modules/ol/format/GeoJSON.js","webpack://GeoLiteMap/./node_modules/ol/format/IIIFInfo.js","webpack://GeoLiteMap/./node_modules/ol/format/JSONFeature.js","webpack://GeoLiteMap/./node_modules/ol/format/MVT.js","webpack://GeoLiteMap/./node_modules/ol/functions.js","webpack://GeoLiteMap/./node_modules/ol/geom/Circle.js","webpack://GeoLiteMap/./node_modules/ol/geom/Geometry.js","webpack://GeoLiteMap/./node_modules/ol/geom/GeometryCollection.js","webpack://GeoLiteMap/./node_modules/ol/geom/LineString.js","webpack://GeoLiteMap/./node_modules/ol/geom/LinearRing.js","webpack://GeoLiteMap/./node_modules/ol/geom/MultiLineString.js","webpack://GeoLiteMap/./node_modules/ol/geom/MultiPoint.js","webpack://GeoLiteMap/./node_modules/ol/geom/MultiPolygon.js","webpack://GeoLiteMap/./node_modules/ol/geom/Point.js","webpack://GeoLiteMap/./node_modules/ol/geom/Polygon.js","webpack://GeoLiteMap/./node_modules/ol/geom/SimpleGeometry.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/area.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/center.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/closest.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/contains.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/deflate.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/inflate.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/interiorpoint.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/interpolate.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/intersectsextent.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/length.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/reverse.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/orient.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/segments.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/simplify.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/transform.js","webpack://GeoLiteMap/./node_modules/ol/has.js","webpack://GeoLiteMap/./node_modules/ol/Geolocation.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DblClickDragZoom.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DragAndDrop.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DragRotateAndZoom.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Draw.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Extent.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Link.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Modify.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Select.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Snap.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Translate.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DoubleClickZoom.js","webpack://GeoLiteMap/./node_modules/ol/render/Box.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DragBox.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DragPan.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DragRotate.js","webpack://GeoLiteMap/./node_modules/ol/interaction/DragZoom.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Interaction.js","webpack://GeoLiteMap/./node_modules/ol/events/Key.js","webpack://GeoLiteMap/./node_modules/ol/interaction/KeyboardPan.js","webpack://GeoLiteMap/./node_modules/ol/interaction/KeyboardZoom.js","webpack://GeoLiteMap/./node_modules/ol/interaction/MouseWheelZoom.js","webpack://GeoLiteMap/./node_modules/ol/interaction/PinchRotate.js","webpack://GeoLiteMap/./node_modules/ol/interaction/PinchZoom.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Pointer.js","webpack://GeoLiteMap/./node_modules/ol/interaction/Property.js","webpack://GeoLiteMap/./node_modules/ol/interaction/defaults.js","webpack://GeoLiteMap/./node_modules/ol/webgl.js","webpack://GeoLiteMap/./node_modules/ol/webgl/Buffer.js","webpack://GeoLiteMap/./node_modules/ol/webgl/ContextEventType.js","webpack://GeoLiteMap/./node_modules/ol/webgl/PostProcessingPass.js","webpack://GeoLiteMap/./node_modules/ol/vec/mat4.js","webpack://GeoLiteMap/./node_modules/ol/webgl/Helper.js","webpack://GeoLiteMap/./node_modules/ol/renderer/webgl/Layer.js","webpack://GeoLiteMap/./node_modules/ol/webgl/RenderTarget.js","webpack://GeoLiteMap/./node_modules/ol/render/webgl/constants.js","webpack://GeoLiteMap/./node_modules/ol/render/webgl/utils.js","webpack://GeoLiteMap/./node_modules/ol/renderer/webgl/PointsLayer.js","webpack://GeoLiteMap/./node_modules/ol/worker/webgl.js","webpack://GeoLiteMap/./node_modules/ol/layer/Heatmap.js","webpack://GeoLiteMap/./node_modules/ol/renderer/canvas/VectorTileLayer.js","webpack://GeoLiteMap/./node_modules/ol/layer/VectorTile.js","webpack://GeoLiteMap/./node_modules/ol-mapbox-style/dist/index.js","webpack://GeoLiteMap/./node_modules/ol/layer/MapboxVector.js","webpack://GeoLiteMap/./node_modules/ol/renderer/canvas/VectorImageLayer.js","webpack://GeoLiteMap/./node_modules/ol/layer/VectorImage.js","webpack://GeoLiteMap/./node_modules/ol/webgl/ShaderBuilder.js","webpack://GeoLiteMap/./node_modules/ol/webgl/BaseTileRepresentation.js","webpack://GeoLiteMap/./node_modules/ol/webgl/TileTexture.js","webpack://GeoLiteMap/./node_modules/ol/renderer/webgl/TileLayerBase.js","webpack://GeoLiteMap/./node_modules/ol/renderer/webgl/TileLayer.js","webpack://GeoLiteMap/./node_modules/ol/style/expressions.js","webpack://GeoLiteMap/./node_modules/ol/webgl/PaletteTexture.js","webpack://GeoLiteMap/./node_modules/ol/webgl/styleparser.js","webpack://GeoLiteMap/./node_modules/ol/layer/WebGLPoints.js","webpack://GeoLiteMap/./node_modules/ol/layer/WebGLTile.js","webpack://GeoLiteMap/./node_modules/ol/layer/Base.js","webpack://GeoLiteMap/./node_modules/ol/layer/BaseTile.js","webpack://GeoLiteMap/./node_modules/ol/style/flat.js","webpack://GeoLiteMap/./node_modules/ol/layer/BaseVector.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/geodesic.js","webpack://GeoLiteMap/./node_modules/ol/layer/Graticule.js","webpack://GeoLiteMap/./node_modules/ol/render.js","webpack://GeoLiteMap/./node_modules/ol/layer/Group.js","webpack://GeoLiteMap/./node_modules/ol/layer/BaseImage.js","webpack://GeoLiteMap/./node_modules/ol/layer/Image.js","webpack://GeoLiteMap/./node_modules/ol/layer/Layer.js","webpack://GeoLiteMap/./node_modules/ol/layer/Property.js","webpack://GeoLiteMap/./node_modules/ol/layer/Tile.js","webpack://GeoLiteMap/./node_modules/ol/layer/TileProperty.js","webpack://GeoLiteMap/./node_modules/ol/layer/Vector.js","webpack://GeoLiteMap/./node_modules/ol/loadingstrategy.js","webpack://GeoLiteMap/./node_modules/ol/math.js","webpack://GeoLiteMap/./node_modules/ol/net.js","webpack://GeoLiteMap/./node_modules/ol/obj.js","webpack://GeoLiteMap/./node_modules/ol/pointer/EventType.js","webpack://GeoLiteMap/./node_modules/ol/proj/epsg3857.js","webpack://GeoLiteMap/./node_modules/ol/proj/epsg4326.js","webpack://GeoLiteMap/./node_modules/ol/proj/projections.js","webpack://GeoLiteMap/./node_modules/ol/proj.js","webpack://GeoLiteMap/./node_modules/ol/proj/Projection.js","webpack://GeoLiteMap/./node_modules/ol/proj/Units.js","webpack://GeoLiteMap/./node_modules/ol/proj/proj4.js","webpack://GeoLiteMap/./node_modules/ol/proj/transforms.js","webpack://GeoLiteMap/./node_modules/ol/render/Event.js","webpack://GeoLiteMap/./node_modules/ol/render/EventType.js","webpack://GeoLiteMap/./node_modules/ol/render/Feature.js","webpack://GeoLiteMap/./node_modules/ol/render/VectorContext.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/Builder.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/ImageBuilder.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/LineStringBuilder.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/PolygonBuilder.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/BuilderGroup.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/textpath.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/Executor.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/ExecutorGroup.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/Immediate.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/Instruction.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/linechunk.js","webpack://GeoLiteMap/./node_modules/ol/geom/flat/straightchunk.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/TextBuilder.js","webpack://GeoLiteMap/./node_modules/ol/render/canvas/hitdetect.js","webpack://GeoLiteMap/./node_modules/ol/renderer/Layer.js","webpack://GeoLiteMap/./node_modules/ol/renderer/canvas/ImageLayer.js","webpack://GeoLiteMap/./node_modules/ol/renderer/canvas/Layer.js","webpack://GeoLiteMap/./node_modules/ol/renderer/canvas/TileLayer.js","webpack://GeoLiteMap/./node_modules/ol/renderer/canvas/VectorLayer.js","webpack://GeoLiteMap/./node_modules/ol/renderer/vector.js","webpack://GeoLiteMap/./node_modules/ol/reproj.js","webpack://GeoLiteMap/./node_modules/ol/reproj/DataTile.js","webpack://GeoLiteMap/./node_modules/ol/reproj/Tile.js","webpack://GeoLiteMap/./node_modules/ol/reproj/Triangulation.js","webpack://GeoLiteMap/./node_modules/ol/reproj/common.js","webpack://GeoLiteMap/./node_modules/ol/rotationconstraint.js","webpack://GeoLiteMap/./node_modules/ol/size.js","webpack://GeoLiteMap/./node_modules/ol/source/BingMaps.js","webpack://GeoLiteMap/./node_modules/ol/source/XYZ.js","webpack://GeoLiteMap/./node_modules/ol/source/CartoDB.js","webpack://GeoLiteMap/./node_modules/ol/source/Cluster.js","webpack://GeoLiteMap/./node_modules/ol/source/DataTile.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/compression/index.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/pool.js","webpack://GeoLiteMap/./node_modules/@petamoriken/float16/src/_util/primordials.mjs","webpack://GeoLiteMap/./node_modules/@petamoriken/float16/src/_util/arrayIterator.mjs","webpack://GeoLiteMap/./node_modules/@petamoriken/float16/src/_util/converter.mjs","webpack://GeoLiteMap/./node_modules/@petamoriken/float16/src/DataView.mjs","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/resample.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/geotiffimage.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/rgb.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/dataview64.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/dataslice.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/httputils.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/basesource.js","webpack://GeoLiteMap/./node_modules/quick-lru/index.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/utils.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/blockedsource.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/client/base.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/client/fetch.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/client/xhr.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/client/http.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/remote.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/source/filereader.js","webpack://GeoLiteMap/./node_modules/geotiff/dist-module/geotiff.js","webpack://GeoLiteMap/./node_modules/ol/source/GeoTIFF.js","webpack://GeoLiteMap/./node_modules/ol/source/Zoomify.js","webpack://GeoLiteMap/./node_modules/ol/source/IIIF.js","webpack://GeoLiteMap/./node_modules/ol/reproj/Image.js","webpack://GeoLiteMap/./node_modules/ol/source/Image.js","webpack://GeoLiteMap/./node_modules/ol/uri.js","webpack://GeoLiteMap/./node_modules/ol/source/ImageArcGISRest.js","webpack://GeoLiteMap/./node_modules/ol/source/ImageCanvas.js","webpack://GeoLiteMap/./node_modules/ol/source/ImageMapGuide.js","webpack://GeoLiteMap/./node_modules/ol/source/ImageStatic.js","webpack://GeoLiteMap/./node_modules/ol/source/wms.js","webpack://GeoLiteMap/./node_modules/ol/source/ImageWMS.js","webpack://GeoLiteMap/./node_modules/ol/source/OSM.js","webpack://GeoLiteMap/./node_modules/ol/source/Raster.js","webpack://GeoLiteMap/./node_modules/ol/source/Stamen.js","webpack://GeoLiteMap/./node_modules/ol/source/TileArcGISRest.js","webpack://GeoLiteMap/./node_modules/ol/source/TileDebug.js","webpack://GeoLiteMap/./node_modules/ol/source/TileWMS.js","webpack://GeoLiteMap/./node_modules/ol/source/UTFGrid.js","webpack://GeoLiteMap/./node_modules/ol/source/WMTS.js","webpack://GeoLiteMap/./node_modules/ol/source.js","webpack://GeoLiteMap/./node_modules/ol/source/Source.js","webpack://GeoLiteMap/./node_modules/ol/source/Tile.js","webpack://GeoLiteMap/./node_modules/ol/source/TileEventType.js","webpack://GeoLiteMap/./node_modules/ol/source/TileImage.js","webpack://GeoLiteMap/./node_modules/ol/source/TileJSON.js","webpack://GeoLiteMap/./node_modules/ol/source/UrlTile.js","webpack://GeoLiteMap/./node_modules/ol/source/Vector.js","webpack://GeoLiteMap/./node_modules/ol/source/VectorEventType.js","webpack://GeoLiteMap/./node_modules/ol/source/VectorTile.js","webpack://GeoLiteMap/./node_modules/ol/sphere.js","webpack://GeoLiteMap/./node_modules/ol/string.js","webpack://GeoLiteMap/./node_modules/ol/structs/LRUCache.js","webpack://GeoLiteMap/./node_modules/ol/structs/RBush.js","webpack://GeoLiteMap/./node_modules/ol/style/Circle.js","webpack://GeoLiteMap/./node_modules/ol/style/Fill.js","webpack://GeoLiteMap/./node_modules/ol/style/Icon.js","webpack://GeoLiteMap/./node_modules/ol/style/IconImage.js","webpack://GeoLiteMap/./node_modules/ol/style/IconImageCache.js","webpack://GeoLiteMap/./node_modules/ol/style/Image.js","webpack://GeoLiteMap/./node_modules/ol/style/RegularShape.js","webpack://GeoLiteMap/./node_modules/ol/style/Stroke.js","webpack://GeoLiteMap/./node_modules/ol/style/Style.js","webpack://GeoLiteMap/./node_modules/ol/style/Text.js","webpack://GeoLiteMap/./node_modules/ol/tilecoord.js","webpack://GeoLiteMap/./node_modules/ol/tilegrid.js","webpack://GeoLiteMap/./node_modules/ol/tilegrid/TileGrid.js","webpack://GeoLiteMap/./node_modules/ol/tilegrid/WMTS.js","webpack://GeoLiteMap/./node_modules/ol/tilegrid/common.js","webpack://GeoLiteMap/./node_modules/ol/tileurlfunction.js","webpack://GeoLiteMap/./node_modules/ol/transform.js","webpack://GeoLiteMap/./node_modules/ol/util.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://GeoLiteMap/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/utils.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/unescape.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/defaults.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/TransWithoutContext.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/context.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/Trans.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://GeoLiteMap/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/withTranslation.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/Translation.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/I18nextProvider.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/useSSR.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/withSSR.js","webpack://GeoLiteMap/./node_modules/react-i18next/dist/es/index.js","webpack://GeoLiteMap/webpack/bootstrap","webpack://GeoLiteMap/webpack/runtime/compat get default export","webpack://GeoLiteMap/webpack/runtime/define property getters","webpack://GeoLiteMap/webpack/runtime/ensure chunk","webpack://GeoLiteMap/webpack/runtime/get javascript chunk filename","webpack://GeoLiteMap/webpack/runtime/get mini-css chunk filename","webpack://GeoLiteMap/webpack/runtime/global","webpack://GeoLiteMap/webpack/runtime/hasOwnProperty shorthand","webpack://GeoLiteMap/webpack/runtime/make namespace object","webpack://GeoLiteMap/webpack/runtime/node module decorator","webpack://GeoLiteMap/webpack/runtime/publicPath","webpack://GeoLiteMap/webpack/runtime/jsonp chunk loading","webpack://GeoLiteMap/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GeoLiteMap\"] = factory();\n\telse\n\t\troot[\"GeoLiteMap\"] = factory();\n})(self, () => {\nreturn ","var inProgress = {};\nvar dataWebpackPrefix = \"GeoLiteMap:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"proj4\")):\"function\"==typeof define&&define.amd?define(\"geo-js\",[\"proj4\"],t):\"object\"==typeof exports?exports[\"geo-js\"]=t(require(\"proj4\")):e[\"geo-js\"]=t(e.proj4)}(window,(function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=1)}([function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.EpsgCode=t.CoordinateSystem=void 0,function(e){e.WGS84=\"dd\",e.LKS92=\"lks\",e.LKS92Math=\"lksrev\",e.DM=\"ddm\",e.DMS=\"dms\",e.MGRS=\"mgrs\"}(t.CoordinateSystem||(t.CoordinateSystem={})),function(e){e.Lks92=\"EPSG:3059\",e.Wgs84=\"EPSG:4326\",e.WebMercator=\"EPSG:3857\"}(t.EpsgCode||(t.EpsgCode={}))},function(e,t,r){\"use strict\";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,\"__esModule\",{value:!0}),t.LayerInfo=void 0;var a=o(r(2));t.LayerInfo=a;var s=r(3);Object.defineProperty(t,\"coordinatesConverter\",{enumerable:!0,get:function(){return s.coordinatesConverter}});var u=r(6);Object.defineProperty(t,\"GeoJsonGeometryType\",{enumerable:!0,get:function(){return u.GeoJsonGeometryType}});var l=r(7);Object.defineProperty(t,\"Config\",{enumerable:!0,get:function(){return l.Config}});var c=r(8);Object.defineProperty(t,\"Query\",{enumerable:!0,get:function(){return c.Query}});var f=r(9);Object.defineProperty(t,\"Layer\",{enumerable:!0,get:function(){return f.Layer}});var d=r(10);Object.defineProperty(t,\"Feature\",{enumerable:!0,get:function(){return d.Feature}});var h=r(0);Object.defineProperty(t,\"CoordinateSystem\",{enumerable:!0,get:function(){return h.CoordinateSystem}}),Object.defineProperty(t,\"EpsgCode\",{enumerable:!0,get:function(){return h.EpsgCode}});var g=r(12);Object.defineProperty(t,\"replaceDiacritics\",{enumerable:!0,get:function(){return g.replaceDiacritics}});var p=r(13);Object.defineProperty(t,\"blobToFile\",{enumerable:!0,get:function(){return p.blobToFile}});var y=r(14);Object.defineProperty(t,\"polygonArea\",{enumerable:!0,get:function(){return y.polygonArea}}),Object.defineProperty(t,\"length\",{enumerable:!0,get:function(){return y.length}});var v=r(15);Object.defineProperty(t,\"FormattedDate\",{enumerable:!0,get:function(){return v.FormattedDate}});var m=r(16);Object.defineProperty(t,\"History\",{enumerable:!0,get:function(){return m.History}})},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0})},function(e,t,r){\"use strict\";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,\"__esModule\",{value:!0}),t.coordinatesConverter=void 0;var a=o(r(4)),s=r(0),u=r(5),l=a.default;l.defs(s.EpsgCode.Lks92,\"+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\");var c={EPSG4326:l.Proj(s.EpsgCode.Wgs84),EPSG3857:l.Proj(s.EpsgCode.WebMercator),EPSG3059:l.Proj(s.EpsgCode.Lks92)},f=new Map;f.set(s.EpsgCode.Lks92,c.EPSG3059).set(s.EpsgCode.Wgs84,c.EPSG4326).set(s.EpsgCode.WebMercator,c.EPSG3857),t.coordinatesConverter={convertLKS92ToWGS84:function(e){var t=l.transform(c.EPSG3059,c.EPSG4326,[e.lng,e.lat]);return{lat:t.y,lng:t.x}},convert:function(e,t,r){var n=f.get(t),i=f.get(r);if(n&&i){var o=l.transform(n,i,e);return t===s.EpsgCode.Wgs84?[o.y,o.x]:[o.x,o.y]}return e},convertLineString:function(e,t,r){for(var n=[],i=0,o=e;i180&&(a.lng=360-a.lng,a.lng_neg=!a.lng_neg),r===s.CoordinateSystem.DM)o=(n=parseInt(a.lng))+\"º \"+this._format(\"00.000\",60*(a.lng-n))+\"'\",i=(n=parseInt(a.lat))+\"º \"+this._format(\"00.000\",60*(a.lat-n))+\"'\";else if(r===s.CoordinateSystem.DMS){n=parseInt(a.lng);var f=Math.trunc(60*(a.lng-n)),d=3600*(a.lng-n-f/60);o=n+\"º \"+this._format(\"00\",f)+\"' \"+this._format(\"00.0\",d)+\"''\",n=parseInt(a.lat);var h=Math.trunc(60*(a.lat-n)),g=3600*(a.lat-n-h/60);i=n+\"º \"+this._format(\"00\",h)+\"' \"+this._format(\"00.0\",g)+\"''\"}else if(r===s.CoordinateSystem.WGS84)o=this._format(\"#0.00000\",a.lng)+\"º\",i=this._format(\"##0.00000\",a.lat)+\"º\";else if(r===s.CoordinateSystem.LKS92){var p=l.transform(c.EPSG4326,c.EPSG3059,[a.lng,a.lat]);i=Math.round(p.y)+\" m\",o=Math.round(p.x)+\" m\"}else if(r===s.CoordinateSystem.MGRS){var y=u.forward([a.lng,a.lat]);return y.substring(0,3)+\" \"+y.substring(3,5)+\" \"+y.substring(5,10)+\" \"+y.substring(10)}return{x:(!t.latlngDesignators&&a.lng_neg?\"-\":\"\")+o+(t.latlngDesignators?a.lng_neg?\" W\":\" E\":\"\"),y:(!t.latlngDesignators&&a.lat_neg?\"-\":\"\")+i+(t.latlngDesignators?a.lat_neg?\" S\":\" N\":\"\")}},_format:function(e,t){if(!e||isNaN(+t))return t;var r=(t=\"-\"==e.charAt(0)?-t:+t)<0?t=-t:0,n=e.match(/[^\\d\\-\\+#]/g),i=n&&n[n.length-1]||\".\",o=n&&n[1]&&n[0]||\",\",a=(e=e.split(i),t.toFixed(e[1]&&e[1].length));a=+a+\"\";var s=e[1]&&e[1].lastIndexOf(\"0\"),u=a.split(\".\");(!u[1]||u[1]&&u[1].length<=s)&&(a=(+a).toFixed(s+1));var l=e[0].split(o);e[0]=l.join(\"\");var c=e[0]&&e[0].indexOf(\"0\");if(c>-1)for(;u[0].length90&&(g=g-90+n-1,y=!0),(g===i||fi||(g>i||fo||(g>o||f90&&(g=g-90+n-1),p>86?(p=p-86+n-1,y=!0):y=!1,(p===i||di||(p>i||do||(p>o||d86&&(p=p-86+n-1),String.fromCharCode(g)+String.fromCharCode(p))+r.substr(r.length-5,t)+a.substr(a.length-5,t);var s,u,l,c,f,d,g,p,y;var v,m,b,S,M,P}(function(e){var t,r,n,i,o,a,s,u=e.lat,c=e.lon,f=6378137,h=l(u),g=l(c);s=Math.floor((c+180)/6)+1,180===c&&(s=60);u>=56&&u<64&&c>=3&&c<12&&(s=32);u>=72&&u<84&&(c>=0&&c<9?s=31:c>=9&&c<21?s=33:c>=21&&c<33?s=35:c>=33&&c<42&&(s=37));a=l(6*(s-1)-180+3),.006739496752268451,t=f/Math.sqrt(1-.00669438*Math.sin(h)*Math.sin(h)),r=Math.tan(h)*Math.tan(h),n=.006739496752268451*Math.cos(h)*Math.cos(h),i=Math.cos(h)*(g-a),o=f*(.9983242984503243*h-.002514607064228144*Math.sin(2*h)+2639046602129982e-21*Math.sin(4*h)-3.418046101696858e-9*Math.sin(6*h));var p=.9996*t*(i+(1-r+n)*i*i*i/6+(5-18*r+r*r+72*n-.39089081163157013)*i*i*i*i*i/120)+5e5,y=.9996*(o+t*Math.tan(h)*(i*i/2+(5-r+9*n+4*n*n)*i*i*i*i/24+(61-58*r+r*r+600*n-2.2240339282485886)*i*i*i*i*i*i/720));u<0&&(y+=1e7);return{northing:Math.round(y),easting:Math.round(p),zoneNumber:s,zoneLetter:d(u)}}({lat:e[1],lon:e[0]}),t)}function s(e){var t=f(g(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat,t.lon,t.lat]:[t.left,t.bottom,t.right,t.top]}function u(e){var t=f(g(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat]:[(t.left+t.right)/2,(t.top+t.bottom)/2]}function l(e){return e*(Math.PI/180)}function c(e){return e/Math.PI*180}function f(e){var t=e.northing,r=e.easting,n=e.zoneLetter,i=e.zoneNumber;if(i<0||i>60)return null;var o,a,s,u,l,d,h,g,p=6378137,y=(1-Math.sqrt(.99330562))/(1+Math.sqrt(.99330562)),v=r-5e5,m=t;n<\"N\"&&(m-=1e7),d=6*(i-1)-180+3,g=(h=m/.9996/6367449.145945056)+(3*y/2-27*y*y*y/32)*Math.sin(2*h)+(21*y*y/16-55*y*y*y*y/32)*Math.sin(4*h)+151*y*y*y/96*Math.sin(6*h),o=p/Math.sqrt(1-.00669438*Math.sin(g)*Math.sin(g)),a=Math.tan(g)*Math.tan(g),s=.006739496752268451*Math.cos(g)*Math.cos(g),u=.99330562*p/Math.pow(1-.00669438*Math.sin(g)*Math.sin(g),1.5),l=v/(.9996*o);var b=g-o*Math.tan(g)/u*(l*l/2-(5+3*a+10*s-4*s*s-.06065547077041606)*l*l*l*l/24+(61+90*a+298*s+45*a*a-1.6983531815716497-3*s*s)*l*l*l*l*l*l/720);b=c(b);var S,M=(l-(1+2*a+s)*l*l*l/6+(5-2*s+28*a-3*s*s+.05391597401814761+24*a*a)*l*l*l*l*l/120)/Math.cos(g);if(M=d+c(M),e.accuracy){var P=f({northing:e.northing+e.accuracy,easting:e.easting+e.accuracy,zoneLetter:e.zoneLetter,zoneNumber:e.zoneNumber});S={top:P.lat,right:P.lon,bottom:b,left:M}}else S={lat:b,lon:M};return S}function d(e){var t=\"Z\";return 84>=e&&e>=72?t=\"X\":72>e&&e>=64?t=\"W\":64>e&&e>=56?t=\"V\":56>e&&e>=48?t=\"U\":48>e&&e>=40?t=\"T\":40>e&&e>=32?t=\"S\":32>e&&e>=24?t=\"R\":24>e&&e>=16?t=\"Q\":16>e&&e>=8?t=\"P\":8>e&&e>=0?t=\"N\":0>e&&e>=-8?t=\"M\":-8>e&&e>=-16?t=\"L\":-16>e&&e>=-24?t=\"K\":-24>e&&e>=-32?t=\"J\":-32>e&&e>=-40?t=\"H\":-40>e&&e>=-48?t=\"G\":-48>e&&e>=-56?t=\"F\":-56>e&&e>=-64?t=\"E\":-64>e&&e>=-72?t=\"D\":-72>e&&e>=-80&&(t=\"C\"),t}function h(e){var t=e%6;return 0===t&&(t=6),t}function g(e){if(e&&0===e.length)throw\"MGRSPoint coverting from nothing\";for(var t,r=e.length,a=null,s=\"\",u=0;!/[A-Z]/.test(t=e.charAt(u));){if(u>=2)throw\"MGRSPoint bad conversion from: \"+e;s+=t,u++}var l=parseInt(s,10);if(0===u||u+3>r)throw\"MGRSPoint bad conversion from: \"+e;var c=e.charAt(u++);if(c<=\"A\"||\"B\"===c||\"Y\"===c||c>=\"Z\"||\"I\"===c||\"O\"===c)throw\"MGRSPoint zone letter \"+c+\" not handled: \"+e;a=e.substring(u,u+=2);for(var f=h(l),d=function(e,t){var r=\"AJSAJS\".charCodeAt(t-1),a=1e5,s=!1;for(;r!==e.charCodeAt(0);){if(++r===i&&r++,r===o&&r++,r>90){if(s)throw\"Bad character: \"+e;r=n,s=!0}a+=1e5}return a}(a.charAt(0),f),g=function(e,t){if(e>\"V\")throw\"MGRSPoint given invalid Northing \"+e;var r=\"AFAFAF\".charCodeAt(t-1),a=0,s=!1;for(;r!==e.charCodeAt(0);){if(++r===i&&r++,r===o&&r++,r>86){if(s)throw\"Bad character: \"+e;r=n,s=!0}a+=1e5}return a}(a.charAt(1),f);g0&&(v=1e5/Math.pow(10,S),m=e.substring(u,u+S),M=parseFloat(m)*v,b=e.substring(u+S),P=parseFloat(b)*v),{easting:M+d,northing:P+g,zoneLetter:c,zoneNumber:l,accuracy:v}}function p(e){var t;switch(e){case\"C\":t=11e5;break;case\"D\":t=2e6;break;case\"E\":t=28e5;break;case\"F\":t=37e5;break;case\"G\":t=46e5;break;case\"H\":t=55e5;break;case\"J\":t=64e5;break;case\"K\":t=73e5;break;case\"L\":t=82e5;break;case\"M\":t=91e5;break;case\"N\":t=0;break;case\"P\":t=8e5;break;case\"Q\":t=17e5;break;case\"R\":t=26e5;break;case\"S\":t=35e5;break;case\"T\":t=44e5;break;case\"U\":t=53e5;break;case\"V\":t=62e5;break;case\"W\":t=7e6;break;case\"X\":t=79e5;break;default:t=-1}if(t>=0)return t;throw\"Invalid zone letter: \"+e}t.default={forward:a,inverse:s,toPoint:u}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.GeoJsonGeometryType=void 0,function(e){e.Polygon=\"Polygon\",e.LineString=\"LineString\",e.Point=\"Point\"}(t.GeoJsonGeometryType||(t.GeoJsonGeometryType={}))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Config=void 0;var n=function(){function e(e){this.config=e}return e.prototype.getConfig=function(){return this.config},e.prototype.getLayerConfig=function(e,t){if(null!=e&&null!=t){var r=this.getServiceConfig(e);if(r&&r.layers&&r.layers.length)return r.layers.find((function(e){return e.id+\"\"==t+\"\"}))}},e.prototype.getServiceConfig=function(e){return this.config.services.find((function(t){return t.id===e}))},e.prototype.getSearchGroupLayerConfigs=function(e){for(var t=[],r=0,n=this.getSearchGroupConfig(e).services;r0&&r.push({layerConfigs:a,serviceId:o.serviceId})}return r},e.prototype.getServiceHiddenFieldNames=function(e){return this.getServiceConfig(e).defaultHiddenFields||void 0},e.prototype.getServiceReadOnlyFieldNames=function(e){return this.getServiceConfig(e).defaultReadOnlyFields||void 0},e.prototype.hasEditableLayers=function(){return this.getEditableLayers().length>0},e.prototype.getEditableLayers=function(){var e=this,t=[];return this.config.serviceGroups.forEach((function(r){r.isBasemapGroup||r.services.forEach((function(r){var n=e.getServiceConfig(r);n&&n.layers&&n.layers.length&&n.layers.forEach((function(n){e.isLayerEditable(n)&&t.push({serviceId:r,config:n})}))}))})),t},e.prototype.isServiceEditable=function(e){var t=this;return!(!e.layers||!e.layers.length)&&e.layers.some((function(e){return t.isLayerEditable(e)}))},e.prototype.isLayerEditable=function(e){return e.edit||e.editGeometry||e.editAttributes},e.prototype.getGroupedServices=function(){for(var e=[],t=0,r=this.config.serviceGroups;t=2&&(s=(\"0\"+f[1]).slice(-2)+\".\"+(\"0\"+f[0]).slice(-2)+\".\"+f[2])}}else s=this.resolveFieldValue(s,a,r);var d=this.resolveFieldAlias(a,r.fields);d?t[d]=s:t[a]=s}}return t},e.prototype.getFeatureId=function(e,t){if(!e)return null;var r=e.fields.find((function(e){return e.type===n.EsriFieldType.OID}));if(r)for(var i in t)if(i===r.name)return t[i];return null},e.prototype.parseDisplayExpression=function(e,t,r){for(var n=t,i=n.split(\"[\"),o=1;o0?r[0].alias:null},e.prototype.isString=function(e){return\"string\"==typeof e||e instanceof String},e}();t.Feature=i},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.IdentifyAttributeName=t.EsriFieldType=void 0,function(e){e.Date=\"esriFieldTypeDate\",e.Double=\"esriFieldTypeDouble\",e.Single=\"esriFieldTypeSingle\",e.OID=\"esriFieldTypeOID\"}(t.EsriFieldType||(t.EsriFieldType={})),function(e){e.ActualisationDate=\"GEOM_ACTUAL_DATE\"}(t.IdentifyAttributeName||(t.IdentifyAttributeName={}))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.replaceDiacritics=void 0,t.replaceDiacritics=function(e){return e.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g,\"\")}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.blobToFile=void 0,t.blobToFile=function(e,t){var r=e;return r.lastModifiedDate=new Date,r.name=t,e}},function(e,t,r){\"use strict\";function n(e){if(e.length<3)return 0;for(var t=0,r=e[0][0],n=1;n0&&(t.currentPosition--,t.isForwardEnabled=!0,0===t.currentPosition&&(t.isBackEnabled=!1),t.onChange(t.history[t.currentPosition]))},this.forward=function(){t.currentPositionthis.limit&&(this.history=this.history.splice(-5),this.currentPosition=this.limit-1),this.currentPosition>0&&(this.isBackEnabled=!0)},e.prototype.clear=function(){this.history=[],this.currentPosition=-1,this.isBackEnabled=!1,this.isForwardEnabled=!1},e}();t.History=n}])}));","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' })\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' })\n );\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\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","export default __webpack_public_path__ + \"assets/img/LVM_GEO_logo_128.jpg\";","export default __webpack_public_path__ + \"assets/img/error-img.svg\";","'use strict';\n\nvar _typeof = require('@babel/runtime/helpers/typeof');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\nvar _toArray = require('@babel/runtime/helpers/toArray');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\nvar _toArray__default = /*#__PURE__*/_interopDefaultLegacy(_toArray);\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass__default[\"default\"](Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck__default[\"default\"](this, EventEmitter);\n this.observers = {};\n }\n _createClass__default[\"default\"](EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nvar ResourceStore = function (_EventEmitter) {\n _inherits__default[\"default\"](ResourceStore, _EventEmitter);\n var _super = _createSuper$3(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck__default[\"default\"](this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass__default[\"default\"](ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits__default[\"default\"](Translator, _EventEmitter);\n var _super = _createSuper$2(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized__default[\"default\"](_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass__default[\"default\"](Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof__default[\"default\"](options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: \"\".concat(namespace).concat(nsSeparator).concat(key),\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck__default[\"default\"](this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass__default[\"default\"](LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass__default[\"default\"](PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck__default[\"default\"](this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass__default[\"default\"](Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n clonedOptions = _objectSpread$3({}, options);\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray__default[\"default\"](_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck__default[\"default\"](this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, opt), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val, opt.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass__default[\"default\"](Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng) {\n var _this = this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits__default[\"default\"](Connector, _EventEmitter);\n var _super = _createSuper$1(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck__default[\"default\"](this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass__default[\"default\"](Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (n) {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n var resolver = function resolver(err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n var fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n var r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function () {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n isUpdate: isUpdate\n });\n var fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n var r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof__default[\"default\"](args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof__default[\"default\"](args[2]) === 'object' || _typeof__default[\"default\"](args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits__default[\"default\"](I18n, _EventEmitter);\n var _super = _createSuper(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck__default[\"default\"](this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized__default[\"default\"](_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn__default[\"default\"](_this, _assertThisInitialized__default[\"default\"](_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass__default[\"default\"](I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof__default[\"default\"](opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(function (k) {\n return \"\".concat(options.keyPrefix).concat(keySeparator).concat(k);\n });\n } else {\n resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n }\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty__default[\"default\"](I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nmodule.exports = instance;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\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\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","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","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 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 isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\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 overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","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 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 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","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 * 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 castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","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","/**\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 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","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 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","/** 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 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 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","/** 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 isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\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","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","/** 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 isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\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","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","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 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","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 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 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 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 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","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","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\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","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","/**\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 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","/** 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","/**\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 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","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\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","/**\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","/**\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 * 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 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","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\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 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 * 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 baseForOwn = require('./_baseForOwn'),\n castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\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","/**\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 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 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 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","/** 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 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","/**\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","/**\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 baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\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 infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\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 baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\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 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","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 arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\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","/**\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","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_GRIDSHIFT = 3;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SRS_WGS84_SEMIMAJOR = 6378137.0; // only used in grid shift transforms\nexport var SRS_WGS84_SEMIMINOR = 6356752.314; // only used in grid shift transforms\nexport var SRS_WGS84_ESQUARED = 0.0066943799901413165; // only used in grid shift transforms\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 gamma: function(v) {\n self.rectified_grid_angle = parseFloat(v);\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 approx: function() {\n self.approx = true;\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][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];\n if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {\n axisOrder += 'n';\n } else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {\n axisOrder += 's';\n } else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {\n axisOrder += 'e';\n } else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {\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_1', 'Latitude of 1st standard parallel'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['standard_parallel_2', 'Latitude of 2nd standard parallel'],\n ['false_easting', 'False_Easting'],\n ['false_easting', 'False easting'],\n ['false-easting', 'Easting at false origin'],\n ['false_northing', 'False_Northing'],\n ['false_northing', 'False northing'],\n ['false_northing', 'Northing at false origin'],\n ['central_meridian', 'Central_Meridian'],\n ['central_meridian', 'Longitude of natural origin'],\n ['central_meridian', 'Longitude of false origin'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['latitude_of_origin', 'Latitude of natural origin'],\n ['latitude_of_origin', 'Latitude of false origin'],\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 } else if (!wkt.lat_ts && wkt.lat0 && wkt.projName === 'Polar_Stereographic') {\n wkt.lat_ts = wkt.lat0;\n wkt.lat0 = d2r(wkt.lat0 > 0 ? 90 : -90);\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","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","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}\nvar 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","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","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","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.clrk80ign = {\n a: 6378249.2,\n b: 6356515,\n rf: 293.4660213,\n ellipseName: \"Clarke 1880 (IGN)\"\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","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: \"598.1,73.7,418.2,0.202,0.045,-2.455,6.7\",\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: \"577.326,90.129,463.919,5.137,1.474,5.297,2.4232\",\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","/**\n * Resources for details of NTv2 file formats:\n * - https://web.archive.org/web/20140127204822if_/http://www.mgs.gov.on.ca:80/stdprodconsume/groups/content/@mgs/@iandit/documents/resourcelist/stel02_047447.pdf\n * - http://mimaka.com/help/gs/html/004_NTV2%20Data%20Format.htm\n */\n\nvar loadedNadgrids = {};\n\n/**\n * Load a binary NTv2 file (.gsb) to a key that can be used in a proj string like +nadgrids=. Pass the NTv2 file\n * as an ArrayBuffer.\n */\nexport default function nadgrid(key, data) {\n var view = new DataView(data);\n var isLittleEndian = detectLittleEndian(view);\n var header = readHeader(view, isLittleEndian);\n if (header.nSubgrids > 1) {\n console.log('Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored');\n }\n var subgrids = readSubgrids(view, header, isLittleEndian);\n var nadgrid = {header: header, subgrids: subgrids};\n loadedNadgrids[key] = nadgrid;\n return nadgrid;\n}\n\n/**\n * Given a proj4 value for nadgrids, return an array of loaded grids\n */\nexport function getNadgrids(nadgrids) {\n // Format details: http://proj.maptools.org/gen_parms.html\n if (nadgrids === undefined) { return null; }\n var grids = nadgrids.split(',');\n return grids.map(parseNadgridString);\n}\n\nfunction parseNadgridString(value) {\n if (value.length === 0) {\n return null;\n }\n var optional = value[0] === '@';\n if (optional) {\n value = value.slice(1);\n }\n if (value === 'null') {\n return {name: 'null', mandatory: !optional, grid: null, isNull: true};\n }\n return {\n name: value,\n mandatory: !optional,\n grid: loadedNadgrids[value] || null,\n isNull: false\n };\n}\n\nfunction secondsToRadians(seconds) {\n return (seconds / 3600) * Math.PI / 180;\n}\n\nfunction detectLittleEndian(view) {\n var nFields = view.getInt32(8, false);\n if (nFields === 11) {\n return false;\n }\n nFields = view.getInt32(8, true);\n if (nFields !== 11) {\n console.warn('Failed to detect nadgrid endian-ness, defaulting to little-endian');\n }\n return true;\n}\n\nfunction readHeader(view, isLittleEndian) {\n return {\n nFields: view.getInt32(8, isLittleEndian),\n nSubgridFields: view.getInt32(24, isLittleEndian),\n nSubgrids: view.getInt32(40, isLittleEndian),\n shiftType: decodeString(view, 56, 56 + 8).trim(),\n fromSemiMajorAxis: view.getFloat64(120, isLittleEndian),\n fromSemiMinorAxis: view.getFloat64(136, isLittleEndian),\n toSemiMajorAxis: view.getFloat64(152, isLittleEndian),\n toSemiMinorAxis: view.getFloat64(168, isLittleEndian),\n };\n}\n\nfunction decodeString(view, start, end) {\n return String.fromCharCode.apply(null, new Uint8Array(view.buffer.slice(start, end)));\n}\n\nfunction readSubgrids(view, header, isLittleEndian) {\n var gridOffset = 176;\n var grids = [];\n for (var i = 0; i < header.nSubgrids; i++) {\n var subHeader = readGridHeader(view, gridOffset, isLittleEndian);\n var nodes = readGridNodes(view, gridOffset, subHeader, isLittleEndian);\n var lngColumnCount = Math.round(\n 1 + (subHeader.upperLongitude - subHeader.lowerLongitude) / subHeader.longitudeInterval);\n var latColumnCount = Math.round(\n 1 + (subHeader.upperLatitude - subHeader.lowerLatitude) / subHeader.latitudeInterval);\n // Proj4 operates on radians whereas the coordinates are in seconds in the grid\n grids.push({\n ll: [secondsToRadians(subHeader.lowerLongitude), secondsToRadians(subHeader.lowerLatitude)],\n del: [secondsToRadians(subHeader.longitudeInterval), secondsToRadians(subHeader.latitudeInterval)],\n lim: [lngColumnCount, latColumnCount],\n count: subHeader.gridNodeCount,\n cvs: mapNodes(nodes)\n });\n }\n return grids;\n}\n\nfunction mapNodes(nodes) {\n return nodes.map(function (r) {return [secondsToRadians(r.longitudeShift), secondsToRadians(r.latitudeShift)];});\n}\n\nfunction readGridHeader(view, offset, isLittleEndian) {\n return {\n name: decodeString(view, offset + 8, offset + 16).trim(),\n parent: decodeString(view, offset + 24, offset + 24 + 8).trim(),\n lowerLatitude: view.getFloat64(offset + 72, isLittleEndian),\n upperLatitude: view.getFloat64(offset + 88, isLittleEndian),\n lowerLongitude: view.getFloat64(offset + 104, isLittleEndian),\n upperLongitude: view.getFloat64(offset + 120, isLittleEndian),\n latitudeInterval: view.getFloat64(offset + 136, isLittleEndian),\n longitudeInterval: view.getFloat64(offset + 152, isLittleEndian),\n gridNodeCount: view.getInt32(offset + 168, isLittleEndian)\n };\n}\n\nfunction readGridNodes(view, offset, gridHeader, isLittleEndian) {\n var nodesOffset = offset + 176;\n var gridRecordLength = 16;\n var gridShiftRecords = [];\n for (var i = 0; i < gridHeader.gridNodeCount; i++) {\n var record = {\n latitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength, isLittleEndian),\n longitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength + 4, isLittleEndian),\n latitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 8, isLittleEndian),\n longitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 12, isLittleEndian),\n };\n gridShiftRecords.push(record);\n }\n return gridShiftRecords;\n}\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';\nimport {getNadgrids} from \"./nadgrid\";\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 = 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 json.lat1 = json.lat1 || json.lat0; // Lambert_Conformal_Conic_1SP, for example, needs this\n\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 nadgrids = getNadgrids(json.nadgrids);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2,\n nadgrids);\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 calculated 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","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","import {PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {\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 if (nadgrids) {\n out.datum_type = PJD_GRIDSHIFT;\n out.grids = nadgrids;\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","'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 {\n PJD_3PARAM,\n PJD_7PARAM,\n PJD_GRIDSHIFT,\n PJD_NODATUM,\n R2D,\n SRS_WGS84_ESQUARED,\n SRS_WGS84_SEMIMAJOR, SRS_WGS84_SEMIMINOR\n} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nimport adjust_lon from \"./common/adjust_lon\";\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 var source_a = source.a;\n var source_es = source.es;\n if (source.datum_type === PJD_GRIDSHIFT) {\n var gridShiftCode = applyGridShift(source, false, point);\n if (gridShiftCode !== 0) {\n return undefined;\n }\n source_a = SRS_WGS84_SEMIMAJOR;\n source_es = SRS_WGS84_ESQUARED;\n }\n\n var dest_a = dest.a;\n var dest_b = dest.b;\n var dest_es = dest.es;\n if (dest.datum_type === PJD_GRIDSHIFT) {\n dest_a = SRS_WGS84_SEMIMAJOR;\n dest_b = SRS_WGS84_SEMIMINOR;\n dest_es = SRS_WGS84_ESQUARED;\n }\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 point = geocentricToGeodetic(point, dest_es, dest_a, dest_b);\n\n if (dest.datum_type === PJD_GRIDSHIFT) {\n var destGridShiftResult = applyGridShift(dest, true, point);\n if (destGridShiftResult !== 0) {\n return undefined;\n }\n }\n\n return point;\n}\n\nexport function applyGridShift(source, inverse, point) {\n if (source.grids === null || source.grids.length === 0) {\n console.log('Grid shift grids not found');\n return -1;\n }\n var input = {x: -point.x, y: point.y};\n var output = {x: Number.NaN, y: Number.NaN};\n var onlyMandatoryGrids = false;\n var attemptedGrids = [];\n for (var i = 0; i < source.grids.length; i++) {\n var grid = source.grids[i];\n attemptedGrids.push(grid.name);\n if (grid.isNull) {\n output = input;\n break;\n }\n onlyMandatoryGrids = grid.mandatory;\n if (grid.grid === null) {\n if (grid.mandatory) {\n console.log(\"Unable to find mandatory grid '\" + grid.name + \"'\");\n return -1;\n }\n continue;\n }\n var subgrid = grid.grid.subgrids[0];\n // skip tables that don't match our point at all\n var epsilon = (Math.abs(subgrid.del[1]) + Math.abs(subgrid.del[0])) / 10000.0;\n var minX = subgrid.ll[0] - epsilon;\n var minY = subgrid.ll[1] - epsilon;\n var maxX = subgrid.ll[0] + (subgrid.lim[0] - 1) * subgrid.del[0] + epsilon;\n var maxY = subgrid.ll[1] + (subgrid.lim[1] - 1) * subgrid.del[1] + epsilon;\n if (minY > input.y || minX > input.x || maxY < input.y || maxX < input.x ) {\n continue;\n }\n output = applySubgridShift(input, inverse, subgrid);\n if (!isNaN(output.x)) {\n break;\n }\n }\n if (isNaN(output.x)) {\n console.log(\"Failed to find a grid shift table for location '\"+\n -input.x * R2D + \" \" + input.y * R2D + \" tried: '\" + attemptedGrids + \"'\");\n return -1;\n }\n point.x = -output.x;\n point.y = output.y;\n return 0;\n}\n\nfunction applySubgridShift(pin, inverse, ct) {\n var val = {x: Number.NaN, y: Number.NaN};\n if (isNaN(pin.x)) { return val; }\n var tb = {x: pin.x, y: pin.y};\n tb.x -= ct.ll[0];\n tb.y -= ct.ll[1];\n tb.x = adjust_lon(tb.x - Math.PI) + Math.PI;\n var t = nadInterpolate(tb, ct);\n if (inverse) {\n if (isNaN(t.x)) {\n return val;\n }\n t.x = tb.x - t.x;\n t.y = tb.y - t.y;\n var i = 9, tol = 1e-12;\n var dif, del;\n do {\n del = nadInterpolate(t, ct);\n if (isNaN(del.x)) {\n console.log(\"Inverse grid shift iteration failed, presumably at grid edge. Using first approximation.\");\n break;\n }\n dif = {x: tb.x - (del.x + t.x), y: tb.y - (del.y + t.y)};\n t.x += dif.x;\n t.y += dif.y;\n } while (i-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol);\n if (i < 0) {\n console.log(\"Inverse grid shift iterator failed to converge.\");\n return val;\n }\n val.x = adjust_lon(t.x + ct.ll[0]);\n val.y = t.y + ct.ll[1];\n } else {\n if (!isNaN(t.x)) {\n val.x = pin.x + t.x;\n val.y = pin.y + t.y;\n }\n }\n return val;\n}\n\nfunction nadInterpolate(pin, ct) {\n var t = {x: pin.x / ct.del[0], y: pin.y / ct.del[1]};\n var indx = {x: Math.floor(t.x), y: Math.floor(t.y)};\n var frct = {x: t.x - 1.0 * indx.x, y: t.y - 1.0 * indx.y};\n var val= {x: Number.NaN, y: Number.NaN};\n var inx;\n if (indx.x < 0 || indx.x >= ct.lim[0]) {\n return val;\n }\n if (indx.y < 0 || indx.y >= ct.lim[1]) {\n return val;\n }\n inx = (indx.y * ct.lim[0]) + indx.x;\n var f00 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx++;\n var f10= {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx += ct.lim[0];\n var f11 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx--;\n var f01 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n var m11 = frct.x * frct.y, m10 = frct.x * (1.0 - frct.y),\n m00 = (1.0 - frct.x) * (1.0 - frct.y), m01 = (1.0 - frct.x) * frct.y;\n val.x = (m00 * f00.x + m10 * f10.x + m01 * f01.x + m11 * f11.x);\n val.y = (m00 * f00.y + m10 * f10.y + m01 * f01.y + m11 * f11.y);\n return val;\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 out[t] = v;\n break;\n case 'w':\n out[t] = -v;\n break;\n case 'n':\n out[t] = v;\n break;\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, PJD_GRIDSHIFT} 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 (\n (source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM || source.datum.datum_type === PJD_GRIDSHIFT) && dest.datumCode !== 'WGS84') ||\n ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM || dest.datum.datum_type === PJD_GRIDSHIFT) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point, enforceAxis) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n } else {\n // Clone the point object so inputs don't get modified\n point = {\n x: point.x,\n y: point.y,\n z: point.z,\n m: point.m\n };\n }\n var hasZ = point.z !== undefined;\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, enforceAxis);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (enforceAxis && 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 if (!point) {\n return;\n }\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 (enforceAxis && dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n if (!hasZ) {\n delete point.z;\n }\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords, enforceAxis) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords, enforceAxis) || {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, enforceAxis);\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, enforceAxis) {\n return transformer(fromProj, toProj, coords, enforceAxis);\n },\n inverse: function (coords, enforceAxis) {\n return transformer(toProj, fromProj, coords, enforceAxis);\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 = [\"Fast_Transverse_Mercator\", \"Fast Transverse Mercator\"];\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(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","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","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport tmerc from '../projections/tmerc';\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.approx && (isNaN(this.es) || this.es <= 0)) {\n throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');\n }\n if (this.approx) {\n // When '+approx' is set, use tmerc instead\n tmerc.init.apply(this);\n this.forward = tmerc.forward;\n this.inverse = tmerc.inverse;\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\", \"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\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","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(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 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","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","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 { D2R, EPSLN, HALF_PI, TWO_PI, FORTPI } from '../constants/values';\n\nvar TOL = 1e-7;\n\nfunction isTypeA(P) {\n var typeAProjections = ['Hotine_Oblique_Mercator','Hotine_Oblique_Mercator_Azimuth_Natural_Origin'];\n var projectionName = typeof P.PROJECTION === \"object\" ? Object.keys(P.PROJECTION)[0] : P.PROJECTION;\n \n return 'no_uoff' in P || 'no_off' in P || typeAProjections.indexOf(projectionName) !== -1;\n}\n\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() { \n var con, com, cosph0, D, F, H, L, sinph0, p, J, gamma = 0,\n gamma0, lamc = 0, lam1 = 0, lam2 = 0, phi1 = 0, phi2 = 0, alpha_c = 0, AB;\n \n // only Type A uses the no_off or no_uoff property\n // https://github.com/OSGeo/proj.4/issues/104\n this.no_off = isTypeA(this);\n this.no_rot = 'no_rot' in this;\n \n var alp = false;\n if (\"alpha\" in this) {\n alp = true;\n }\n\n var gam = false;\n if (\"rectified_grid_angle\" in this) {\n gam = true;\n }\n\n if (alp) {\n alpha_c = this.alpha;\n }\n \n if (gam) {\n gamma = (this.rectified_grid_angle * D2R);\n }\n \n if (alp || gam) {\n lamc = this.longc;\n } else {\n lam1 = this.long1;\n phi1 = this.lat1;\n lam2 = this.long2;\n phi2 = this.lat2;\n \n if (Math.abs(phi1 - phi2) <= TOL || (con = Math.abs(phi1)) <= TOL ||\n Math.abs(con - HALF_PI) <= TOL || Math.abs(Math.abs(this.lat0) - HALF_PI) <= TOL ||\n Math.abs(Math.abs(phi2) - HALF_PI) <= TOL) {\n throw new Error();\n }\n }\n \n var one_es = 1.0 - this.es;\n com = Math.sqrt(one_es);\n \n if (Math.abs(this.lat0) > EPSLN) {\n sinph0 = Math.sin(this.lat0);\n cosph0 = Math.cos(this.lat0);\n con = 1 - this.es * sinph0 * sinph0;\n this.B = cosph0 * cosph0;\n this.B = Math.sqrt(1 + this.es * this.B * this.B / one_es);\n this.A = this.B * this.k0 * com / con;\n D = this.B * com / (cosph0 * Math.sqrt(con));\n F = D * D -1;\n \n if (F <= 0) {\n F = 0;\n } else {\n F = Math.sqrt(F);\n if (this.lat0 < 0) {\n F = -F;\n }\n }\n \n this.E = F += D;\n this.E *= Math.pow(tsfnz(this.e, this.lat0, sinph0), this.B);\n } else {\n this.B = 1 / com;\n this.A = this.k0;\n this.E = D = F = 1;\n }\n \n if (alp || gam) {\n if (alp) {\n gamma0 = Math.asin(Math.sin(alpha_c) / D);\n if (!gam) {\n gamma = alpha_c;\n }\n } else {\n gamma0 = gamma;\n alpha_c = Math.asin(D * Math.sin(gamma0));\n }\n this.lam0 = lamc - Math.asin(0.5 * (F - 1 / F) * Math.tan(gamma0)) / this.B;\n } else {\n H = Math.pow(tsfnz(this.e, phi1, Math.sin(phi1)), this.B);\n L = Math.pow(tsfnz(this.e, phi2, Math.sin(phi2)), this.B);\n F = this.E / H;\n p = (L - H) / (L + H);\n J = this.E * this.E;\n J = (J - L * H) / (J + L * H);\n con = lam1 - lam2;\n \n if (con < -Math.pi) {\n lam2 -=TWO_PI;\n } else if (con > Math.pi) {\n lam2 += TWO_PI;\n }\n \n this.lam0 = adjust_lon(0.5 * (lam1 + lam2) - Math.atan(J * Math.tan(0.5 * this.B * (lam1 - lam2)) / p) / this.B);\n gamma0 = Math.atan(2 * Math.sin(this.B * adjust_lon(lam1 - this.lam0)) / (F - 1 / F));\n gamma = alpha_c = Math.asin(D * Math.sin(gamma0));\n }\n \n this.singam = Math.sin(gamma0);\n this.cosgam = Math.cos(gamma0);\n this.sinrot = Math.sin(gamma);\n this.cosrot = Math.cos(gamma);\n \n this.rB = 1 / this.B;\n this.ArB = this.A * this.rB;\n this.BrA = 1 / this.ArB;\n AB = this.A * this.B;\n \n if (this.no_off) {\n this.u_0 = 0;\n } else {\n this.u_0 = Math.abs(this.ArB * Math.atan(Math.sqrt(D * D - 1) / Math.cos(alpha_c)));\n \n if (this.lat0 < 0) {\n this.u_0 = - this.u_0;\n } \n }\n \n F = 0.5 * gamma0;\n this.v_pole_n = this.ArB * Math.log(Math.tan(FORTPI - F));\n this.v_pole_s = this.ArB * Math.log(Math.tan(FORTPI + F));\n}\n\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var coords = {};\n var S, T, U, V, W, temp, u, v;\n p.x = p.x - this.lam0;\n \n if (Math.abs(Math.abs(p.y) - HALF_PI) > EPSLN) {\n W = this.E / Math.pow(tsfnz(this.e, p.y, Math.sin(p.y)), this.B);\n \n temp = 1 / W;\n S = 0.5 * (W - temp);\n T = 0.5 * (W + temp);\n V = Math.sin(this.B * p.x);\n U = (S * this.singam - V * this.cosgam) / T;\n \n if (Math.abs(Math.abs(U) - 1.0) < EPSLN) {\n throw new Error();\n }\n \n v = 0.5 * this.ArB * Math.log((1 - U)/(1 + U));\n temp = Math.cos(this.B * p.x);\n \n if (Math.abs(temp) < TOL) {\n u = this.A * p.x;\n } else {\n u = this.ArB * Math.atan2((S * this.cosgam + V * this.singam), temp);\n } \n } else {\n v = p.y > 0 ? this.v_pole_n : this.v_pole_s;\n u = this.ArB * p.y;\n }\n \n if (this.no_rot) {\n coords.x = u;\n coords.y = v;\n } else {\n u -= this.u_0;\n coords.x = v * this.cosrot + u * this.sinrot;\n coords.y = u * this.cosrot - v * this.sinrot;\n }\n \n coords.x = (this.a * coords.x + this.x0);\n coords.y = (this.a * coords.y + this.y0);\n \n return coords;\n}\n\nexport function inverse(p) {\n var u, v, Qp, Sp, Tp, Vp, Up;\n var coords = {};\n \n p.x = (p.x - this.x0) * (1.0 / this.a);\n p.y = (p.y - this.y0) * (1.0 / this.a);\n\n if (this.no_rot) {\n v = p.y;\n u = p.x;\n } else {\n v = p.x * this.cosrot - p.y * this.sinrot;\n u = p.y * this.cosrot + p.x * this.sinrot + this.u_0;\n }\n \n Qp = Math.exp(-this.BrA * v);\n Sp = 0.5 * (Qp - 1 / Qp);\n Tp = 0.5 * (Qp + 1 / Qp);\n Vp = Math.sin(this.BrA * u);\n Up = (Vp * this.cosgam + Sp * this.singam) / Tp;\n \n if (Math.abs(Math.abs(Up) - 1) < EPSLN) {\n coords.x = 0;\n coords.y = Up < 0 ? -HALF_PI : HALF_PI;\n } else {\n coords.y = this.E / Math.sqrt((1 + Up) / (1 - Up));\n coords.y = phi2z(this.e, Math.pow(coords.y, 1 / this.B));\n \n if (coords.y === Infinity) {\n throw new Error();\n }\n \n coords.x = -this.rB * Math.atan2((Sp * this.cosgam - Vp * this.singam), Math.cos(this.BrA * u));\n }\n \n coords.x += this.lam0;\n \n return coords;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Two_Point_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"Oblique_Mercator\", \"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 //double lat0; /* the reference latitude */\n //double long0; /* the reference 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 //the above value can be set with proj4.defs\n //example: proj4.defs(\"EPSG:2154\",\"+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\");\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 = [\n \"Lambert Tangential Conformal Conic Projection\",\n \"Lambert_Conformal_Conic\",\n \"Lambert_Conformal_Conic_1SP\",\n \"Lambert_Conformal_Conic_2SP\",\n \"lcc\",\n \"Lambert Conic Conformal (1SP)\",\n \"Lambert Conic Conformal (2SP)\"\n];\n\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);\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);\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);\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);\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 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 {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 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};","\nvar mode = {\n N_POLE: 0,\n S_POLE: 1,\n EQUIT: 2,\n OBLIQ: 3\n};\n\nimport { D2R, HALF_PI, EPSLN } from \"../constants/values\";\nimport hypot from \"../common/hypot\";\n\nvar params = {\n h: { def: 100000, num: true }, // default is Karman line, no default in PROJ.7\n azi: { def: 0, num: true, degrees: true }, // default is North\n tilt: { def: 0, num: true, degrees: true }, // default is Nadir\n long0: { def: 0, num: true }, // default is Greenwich, conversion to rad is automatic\n lat0: { def: 0, num: true } // default is Equator, conversion to rad is automatic\n};\n\nexport function init() {\n Object.keys(params).forEach(function (p) {\n if (typeof this[p] === \"undefined\") {\n this[p] = params[p].def;\n } else if (params[p].num && isNaN(this[p])) {\n throw new Error(\"Invalid parameter value, must be numeric \" + p + \" = \" + this[p]);\n } else if (params[p].num) {\n this[p] = parseFloat(this[p]);\n }\n if (params[p].degrees) {\n this[p] = this[p] * D2R;\n }\n }.bind(this));\n\n if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) {\n this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;\n } else if (Math.abs(this.lat0) < EPSLN) {\n this.mode = mode.EQUIT;\n } else {\n this.mode = mode.OBLIQ;\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n\n this.pn1 = this.h / this.a; // Normalize relative to the Earth's radius\n\n if (this.pn1 <= 0 || this.pn1 > 1e10) {\n throw new Error(\"Invalid height\");\n }\n \n this.p = 1 + this.pn1;\n this.rp = 1 / this.p;\n this.h1 = 1 / this.pn1;\n this.pfact = (this.p + 1) * this.h1;\n this.es = 0;\n\n var omega = this.tilt;\n var gamma = this.azi;\n this.cg = Math.cos(gamma);\n this.sg = Math.sin(gamma);\n this.cw = Math.cos(omega);\n this.sw = Math.sin(omega);\n}\n\nexport function forward(p) {\n p.x -= this.long0;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var coslam = Math.cos(p.x);\n var x, y;\n switch (this.mode) {\n case mode.OBLIQ:\n y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y = cosphi * coslam;\n break;\n case mode.S_POLE:\n y = -sinphi;\n break;\n case mode.N_POLE:\n y = sinphi;\n break;\n }\n y = this.pn1 / (this.p - y);\n x = y * cosphi * Math.sin(p.x);\n\n switch (this.mode) {\n case mode.OBLIQ:\n y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y *= sinphi;\n break;\n case mode.N_POLE:\n y *= -(cosphi * coslam);\n break;\n case mode.S_POLE:\n y *= cosphi * coslam;\n break;\n }\n\n // Tilt \n var yt, ba;\n yt = y * this.cg + x * this.sg;\n ba = 1 / (yt * this.sw * this.h1 + this.cw);\n x = (x * this.cg - y * this.sg) * this.cw * ba;\n y = yt * ba;\n\n p.x = x * this.a;\n p.y = y * this.a;\n return p;\n}\n\nexport function inverse(p) {\n p.x /= this.a;\n p.y /= this.a;\n var r = { x: p.x, y: p.y };\n\n // Un-Tilt\n var bm, bq, yt;\n yt = 1 / (this.pn1 - p.y * this.sw);\n bm = this.pn1 * p.x * yt;\n bq = this.pn1 * p.y * this.cw * yt;\n p.x = bm * this.cg + bq * this.sg;\n p.y = bq * this.cg - bm * this.sg;\n\n var rh = hypot(p.x, p.y);\n if (Math.abs(rh) < EPSLN) {\n r.x = 0;\n r.y = p.y;\n } else {\n var cosz, sinz;\n sinz = 1 - rh * rh * this.pfact;\n sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);\n cosz = Math.sqrt(1 - sinz * sinz);\n switch (this.mode) {\n case mode.OBLIQ:\n r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh);\n p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh;\n p.x *= sinz * this.cosph0;\n break;\n case mode.EQUIT:\n r.y = Math.asin(p.y * sinz / rh);\n p.y = cosz * rh;\n p.x *= sinz;\n break;\n case mode.N_POLE:\n r.y = Math.asin(cosz);\n p.y = -p.y;\n break;\n case mode.S_POLE:\n r.y = -Math.asin(cosz);\n break;\n }\n r.x = Math.atan2(p.x, p.y);\n }\n\n p.x = r.x + this.long0;\n p.y = r.y;\n return p;\n}\n\nexport var names = [\"Tilted_Perspective\", \"tpers\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import hypot from '../common/hypot';\n\nexport function init() {\n this.flip_axis = (this.sweep === 'x' ? 1 : 0);\n this.h = Number(this.h);\n this.radius_g_1 = this.h / this.a;\n\n if (this.radius_g_1 <= 0 || this.radius_g_1 > 1e10) {\n throw new Error();\n }\n\n this.radius_g = 1.0 + this.radius_g_1;\n this.C = this.radius_g * this.radius_g - 1.0;\n\n if (this.es !== 0.0) {\n var one_es = 1.0 - this.es;\n var rone_es = 1 / one_es;\n\n this.radius_p = Math.sqrt(one_es);\n this.radius_p2 = one_es;\n this.radius_p_inv2 = rone_es;\n\n this.shape = 'ellipse'; // Use as a condition in the forward and inverse functions.\n } else {\n this.radius_p = 1.0;\n this.radius_p2 = 1.0;\n this.radius_p_inv2 = 1.0;\n\n this.shape = 'sphere'; // Use as a condition in the forward and inverse functions.\n }\n\n if (!this.title) {\n this.title = \"Geostationary Satellite View\";\n }\n}\n\nfunction forward(p) {\n var lon = p.x;\n var lat = p.y;\n var tmp, v_x, v_y, v_z;\n lon = lon - this.long0;\n\n if (this.shape === 'ellipse') {\n lat = Math.atan(this.radius_p2 * Math.tan(lat));\n var r = this.radius_p / hypot(this.radius_p * Math.cos(lat), Math.sin(lat));\n\n v_x = r * Math.cos(lon) * Math.cos(lat);\n v_y = r * Math.sin(lon) * Math.cos(lat);\n v_z = r * Math.sin(lat);\n\n if (((this.radius_g - v_x) * v_x - v_y * v_y - v_z * v_z * this.radius_p_inv2) < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n tmp = this.radius_g - v_x;\n if (this.flip_axis) {\n p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n } else {\n p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n }\n } else if (this.shape === 'sphere') {\n tmp = Math.cos(lat);\n v_x = Math.cos(lon) * tmp;\n v_y = Math.sin(lon) * tmp;\n v_z = Math.sin(lat);\n tmp = this.radius_g - v_x;\n\n if (this.flip_axis) {\n p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n } else {\n p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n }\n }\n p.x = p.x * this.a;\n p.y = p.y * this.a;\n return p;\n}\n\nfunction inverse(p) {\n var v_x = -1.0;\n var v_y = 0.0;\n var v_z = 0.0;\n var a, b, det, k;\n\n p.x = p.x / this.a;\n p.y = p.y / this.a;\n\n if (this.shape === 'ellipse') {\n if (this.flip_axis) {\n v_z = Math.tan(p.y / this.radius_g_1);\n v_y = Math.tan(p.x / this.radius_g_1) * hypot(1.0, v_z);\n } else {\n v_y = Math.tan(p.x / this.radius_g_1);\n v_z = Math.tan(p.y / this.radius_g_1) * hypot(1.0, v_y);\n }\n\n var v_zp = v_z / this.radius_p;\n a = v_y * v_y + v_zp * v_zp + v_x * v_x;\n b = 2 * this.radius_g * v_x;\n det = (b * b) - 4 * a * this.C;\n\n if (det < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n k = (-b - Math.sqrt(det)) / (2.0 * a);\n v_x = this.radius_g + k * v_x;\n v_y *= k;\n v_z *= k;\n\n p.x = Math.atan2(v_y, v_x);\n p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n p.y = Math.atan(this.radius_p_inv2 * Math.tan(p.y));\n } else if (this.shape === 'sphere') {\n if (this.flip_axis) {\n v_z = Math.tan(p.y / this.radius_g_1);\n v_y = Math.tan(p.x / this.radius_g_1) * Math.sqrt(1.0 + v_z * v_z);\n } else {\n v_y = Math.tan(p.x / this.radius_g_1);\n v_z = Math.tan(p.y / this.radius_g_1) * Math.sqrt(1.0 + v_y * v_y);\n }\n\n a = v_y * v_y + v_z * v_z + v_x * v_x;\n b = 2 * this.radius_g * v_x;\n det = (b * b) - 4 * a * this.C;\n if (det < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n k = (-b - Math.sqrt(det)) / (2.0 * a);\n v_x = this.radius_g + k * v_x;\n v_y *= k;\n v_z *= k;\n\n p.x = Math.atan2(v_y, v_x);\n p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n }\n p.x = p.x + this.long0;\n return p;\n}\n\nexport var names = [\"Geostationary Satellite View\", \"Geostationary_Satellite\", \"geos\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n};\n\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';\nimport tpers from './lib/projections/tpers';\nimport geos from './lib/projections/geos';\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 proj4.Proj.projections.add(tpers);\n proj4.Proj.projections.add(geos);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport nadgrid from \"./nadgrid\";\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.nadgrid = nadgrid;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","var checkboardCache = {};\n\nexport var render = function render(c1, c2, size, serverCanvas) {\n if (typeof document === 'undefined' && !serverCanvas) {\n return null;\n }\n var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas');\n canvas.width = size * 2;\n canvas.height = size * 2;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return null;\n } // If no context can be found, return early.\n ctx.fillStyle = c1;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = c2;\n ctx.fillRect(0, 0, size, size);\n ctx.translate(size, size);\n ctx.fillRect(0, 0, size, size);\n return canvas.toDataURL();\n};\n\nexport var get = function get(c1, c2, size, serverCanvas) {\n var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : '');\n\n if (checkboardCache[key]) {\n return checkboardCache[key];\n }\n\n var checkboard = render(c1, c2, size, serverCanvas);\n checkboardCache[key] = checkboard;\n return checkboard;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React, { isValidElement } from 'react';\nimport reactCSS from 'reactcss';\nimport * as checkboard from '../../helpers/checkboard';\n\nexport var Checkboard = function Checkboard(_ref) {\n var white = _ref.white,\n grey = _ref.grey,\n size = _ref.size,\n renderers = _ref.renderers,\n borderRadius = _ref.borderRadius,\n boxShadow = _ref.boxShadow,\n children = _ref.children;\n\n var styles = reactCSS({\n 'default': {\n grid: {\n borderRadius: borderRadius,\n boxShadow: boxShadow,\n absolute: '0px 0px 0px 0px',\n background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left'\n }\n }\n });\n return isValidElement(children) ? React.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : React.createElement('div', { style: styles.grid });\n};\n\nCheckboard.defaultProps = {\n size: 8,\n white: 'transparent',\n grey: 'rgba(0,0,0,.08)',\n renderers: {}\n};\n\nexport default Checkboard;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as alpha from '../../helpers/alpha';\n\nimport Checkboard from './Checkboard';\n\nexport var Alpha = function (_ref) {\n _inherits(Alpha, _ref);\n\n function Alpha() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Alpha);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleChange);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Alpha, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var rgb = this.props.rgb;\n var styles = reactCSS({\n 'default': {\n alpha: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n checkboard: {\n absolute: '0px 0px 0px 0px',\n overflow: 'hidden',\n borderRadius: this.props.radius\n },\n gradient: {\n absolute: '0px 0px 0px 0px',\n background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n container: {\n position: 'relative',\n height: '100%',\n margin: '0 3px'\n },\n pointer: {\n position: 'absolute',\n left: rgb.a * 100 + '%'\n },\n slider: {\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n marginTop: '1px',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n gradient: {\n background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)'\n },\n pointer: {\n left: 0,\n top: rgb.a * 100 + '%'\n }\n },\n 'overwrite': _extends({}, this.props.style)\n }, {\n vertical: this.props.direction === 'vertical',\n overwrite: true\n });\n\n return React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(\n 'div',\n { style: styles.checkboard },\n React.createElement(Checkboard, { renderers: this.props.renderers })\n ),\n React.createElement('div', { style: styles.gradient }),\n React.createElement(\n 'div',\n {\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Alpha;\n}(PureComponent || Component);\n\nexport default Alpha;","export var calculateChange = function calculateChange(e, hsl, direction, initialA, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var a = void 0;\n if (top < 0) {\n a = 0;\n } else if (top > containerHeight) {\n a = 1;\n } else {\n a = Math.round(top * 100 / containerHeight) / 100;\n }\n\n if (hsl.a !== a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: a,\n source: 'rgb'\n };\n }\n } else {\n var _a = void 0;\n if (left < 0) {\n _a = 0;\n } else if (left > containerWidth) {\n _a = 1;\n } else {\n _a = Math.round(left * 100 / containerWidth) / 100;\n }\n\n if (initialA !== _a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: _a,\n source: 'rgb'\n };\n }\n }\n return null;\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\n\nvar DEFAULT_ARROW_OFFSET = 1;\n\nvar UP_KEY_CODE = 38;\nvar DOWN_KEY_CODE = 40;\nvar VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE];\nvar isValidKeyCode = function isValidKeyCode(keyCode) {\n return VALID_KEY_CODES.indexOf(keyCode) > -1;\n};\nvar getNumberValue = function getNumberValue(value) {\n return Number(String(value).replace(/%/g, ''));\n};\n\nvar idCounter = 1;\n\nexport var EditableInput = function (_ref) {\n _inherits(EditableInput, _ref);\n\n function EditableInput(props) {\n _classCallCheck(this, EditableInput);\n\n var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this));\n\n _this.handleBlur = function () {\n if (_this.state.blurValue) {\n _this.setState({ value: _this.state.blurValue, blurValue: null });\n }\n };\n\n _this.handleChange = function (e) {\n _this.setUpdatedValue(e.target.value, e);\n };\n\n _this.handleKeyDown = function (e) {\n // In case `e.target.value` is a percentage remove the `%` character\n // and update accordingly with a percentage\n // https://github.com/casesandberg/react-color/issues/383\n var value = getNumberValue(e.target.value);\n if (!isNaN(value) && isValidKeyCode(e.keyCode)) {\n var offset = _this.getArrowOffset();\n var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset;\n\n _this.setUpdatedValue(updatedValue, e);\n }\n };\n\n _this.handleDrag = function (e) {\n if (_this.props.dragLabel) {\n var newValue = Math.round(_this.props.value + e.movementX);\n if (newValue >= 0 && newValue <= _this.props.dragMax) {\n _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n if (_this.props.dragLabel) {\n e.preventDefault();\n _this.handleDrag(e);\n window.addEventListener('mousemove', _this.handleDrag);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleDrag);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.state = {\n value: String(props.value).toUpperCase(),\n blurValue: String(props.value).toUpperCase()\n };\n\n _this.inputId = 'rc-editable-input-' + idCounter++;\n return _this;\n }\n\n _createClass(EditableInput, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {\n if (this.input === document.activeElement) {\n this.setState({ blurValue: String(this.props.value).toUpperCase() });\n } else {\n this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'getValueObjectWithLabel',\n value: function getValueObjectWithLabel(value) {\n return _defineProperty({}, this.props.label, value);\n }\n }, {\n key: 'getArrowOffset',\n value: function getArrowOffset() {\n return this.props.arrowOffset || DEFAULT_ARROW_OFFSET;\n }\n }, {\n key: 'setUpdatedValue',\n value: function setUpdatedValue(value, e) {\n var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value;\n this.props.onChange && this.props.onChange(onChangeValue, e);\n\n this.setState({ value: value });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n position: 'relative'\n }\n },\n 'user-override': {\n wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {},\n input: this.props.style && this.props.style.input ? this.props.style.input : {},\n label: this.props.style && this.props.style.label ? this.props.style.label : {}\n },\n 'dragLabel-true': {\n label: {\n cursor: 'ew-resize'\n }\n }\n }, {\n 'user-override': true\n }, this.props);\n\n return React.createElement(\n 'div',\n { style: styles.wrap },\n React.createElement('input', {\n id: this.inputId,\n style: styles.input,\n ref: function ref(input) {\n return _this2.input = input;\n },\n value: this.state.value,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange,\n onBlur: this.handleBlur,\n placeholder: this.props.placeholder,\n spellCheck: 'false'\n }),\n this.props.label && !this.props.hideLabel ? React.createElement(\n 'label',\n {\n htmlFor: this.inputId,\n style: styles.label,\n onMouseDown: this.handleMouseDown\n },\n this.props.label\n ) : null\n );\n }\n }]);\n\n return EditableInput;\n}(PureComponent || Component);\n\nexport default EditableInput;","export var calculateChange = function calculateChange(e, direction, hsl, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var h = void 0;\n if (top < 0) {\n h = 359;\n } else if (top > containerHeight) {\n h = 0;\n } else {\n var percent = -(top * 100 / containerHeight) + 100;\n h = 360 * percent / 100;\n }\n\n if (hsl.h !== h) {\n return {\n h: h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n } else {\n var _h = void 0;\n if (left < 0) {\n _h = 0;\n } else if (left > containerWidth) {\n _h = 359;\n } else {\n var _percent = left * 100 / containerWidth;\n _h = 360 * _percent / 100;\n }\n\n if (hsl.h !== _h) {\n return {\n h: _h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n }\n return null;\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as hue from '../../helpers/hue';\n\nexport var Hue = function (_ref) {\n _inherits(Hue, _ref);\n\n function Hue() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hue);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Hue, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props$direction = this.props.direction,\n direction = _props$direction === undefined ? 'horizontal' : _props$direction;\n\n\n var styles = reactCSS({\n 'default': {\n hue: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius,\n boxShadow: this.props.shadow\n },\n container: {\n padding: '0 2px',\n position: 'relative',\n height: '100%',\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n left: this.props.hsl.h * 100 / 360 + '%'\n },\n slider: {\n marginTop: '1px',\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n pointer: {\n left: '0px',\n top: -(this.props.hsl.h * 100 / 360) + 100 + '%'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(\n 'div',\n {\n className: 'hue-' + direction,\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'style',\n null,\n '\\n .hue-horizontal {\\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n\\n .hue-vertical {\\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n '\n ),\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Hue;\n}(PureComponent || Component);\n\nexport default Hue;","/**\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\nexport default listCacheClear;\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\nexport default eq;\n","import eq from './eq.js';\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\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\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\nexport default ListCache;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\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\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\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\nexport default getRawTag;\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\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\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\nexport default baseGetTag;\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\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\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\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\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\nexport default isMasked;\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\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\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\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\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\nexport default getNative;\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\nexport default getValue;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\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\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashClear;\n","/**\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\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashSet;\n","import isKeyable from './_isKeyable.js';\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\nexport default getMapData;\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\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\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\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\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\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\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\nexport default Stack;\n","import ListCache from './_ListCache.js';\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\nexport default stackClear;\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\nexport default stackDelete;\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\nexport default stackGet;\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\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\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\nexport default stackSet;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\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\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import root from './_root.js';\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\nexport default cloneBuffer;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\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\nexport default cloneTypedArray;\n","import Uint8Array from './_Uint8Array.js';\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\nexport default cloneArrayBuffer;\n","import isObject from './isObject.js';\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\nexport default baseCreate;\n","/**\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\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/** 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\nexport default isPrototype;\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\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isArguments;\n","/**\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\nexport default isArray;\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\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\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\nexport default isArrayLike;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\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\nexport default isBuffer;\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\nexport default stubFalse;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\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 infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default baseIsTypedArray;\n","import freeGlobal from './_freeGlobal.js';\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\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\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\nexport default isTypedArray;\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\nexport default baseUnary;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\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\nexport default assignValue;\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\nexport default isIndex;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\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\nexport default arrayLikeKeys;\n","/**\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\nexport default baseTimes;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\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\nexport default baseKeysIn;\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\nexport default nativeKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\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\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\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\nexport default copyObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\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\nexport default copyArray;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\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\nexport default initCloneObject;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nexport var Raised = function Raised(_ref) {\n var zDepth = _ref.zDepth,\n radius = _ref.radius,\n background = _ref.background,\n children = _ref.children,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles;\n\n var styles = reactCSS(merge({\n 'default': {\n wrap: {\n position: 'relative',\n display: 'inline-block'\n },\n content: {\n position: 'relative'\n },\n bg: {\n absolute: '0px 0px 0px 0px',\n boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)',\n borderRadius: radius,\n background: background\n }\n },\n 'zDepth-0': {\n bg: {\n boxShadow: 'none'\n }\n },\n\n 'zDepth-1': {\n bg: {\n boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)'\n }\n },\n 'zDepth-2': {\n bg: {\n boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)'\n }\n },\n 'zDepth-3': {\n bg: {\n boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)'\n }\n },\n 'zDepth-4': {\n bg: {\n boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)'\n }\n },\n 'zDepth-5': {\n bg: {\n boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)'\n }\n },\n 'square': {\n bg: {\n borderRadius: '0'\n }\n },\n 'circle': {\n bg: {\n borderRadius: '50%'\n }\n }\n }, passedStyles), { 'zDepth-1': zDepth === 1 });\n\n return React.createElement(\n 'div',\n { style: styles.wrap },\n React.createElement('div', { style: styles.bg }),\n React.createElement(\n 'div',\n { style: styles.content },\n children\n )\n );\n};\n\nRaised.propTypes = {\n background: PropTypes.string,\n zDepth: PropTypes.oneOf([0, 1, 2, 3, 4, 5]),\n radius: PropTypes.number,\n styles: PropTypes.object\n};\n\nRaised.defaultProps = {\n background: '#fff',\n zDepth: 1,\n radius: 2,\n styles: {}\n};\n\nexport default Raised;","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","export var calculateChange = function calculateChange(e, hsl, container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n containerWidth = _container$getBoundin.width,\n containerHeight = _container$getBoundin.height;\n\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (left < 0) {\n left = 0;\n } else if (left > containerWidth) {\n left = containerWidth;\n }\n\n if (top < 0) {\n top = 0;\n } else if (top > containerHeight) {\n top = containerHeight;\n }\n\n var saturation = left / containerWidth;\n var bright = 1 - top / containerHeight;\n\n return {\n h: hsl.h,\n s: saturation,\n v: bright,\n a: hsl.a,\n source: 'hsv'\n };\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport throttle from 'lodash-es/throttle';\nimport * as saturation from '../../helpers/saturation';\n\nexport var Saturation = function (_ref) {\n _inherits(Saturation, _ref);\n\n function Saturation(props) {\n _classCallCheck(this, Saturation);\n\n var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props));\n\n _this.handleChange = function (e) {\n typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e);\n };\n\n _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n var renderWindow = _this.getContainerRenderWindow();\n renderWindow.addEventListener('mousemove', _this.handleChange);\n renderWindow.addEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.throttle = throttle(function (fn, data, e) {\n fn(data, e);\n }, 50);\n return _this;\n }\n\n _createClass(Saturation, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.throttle.cancel();\n this.unbindEventListeners();\n }\n }, {\n key: 'getContainerRenderWindow',\n value: function getContainerRenderWindow() {\n var container = this.container;\n\n var renderWindow = window;\n while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n renderWindow = renderWindow.parent;\n }\n return renderWindow;\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n var renderWindow = this.getContainerRenderWindow();\n renderWindow.removeEventListener('mousemove', this.handleChange);\n renderWindow.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _ref2 = this.props.style || {},\n color = _ref2.color,\n white = _ref2.white,\n black = _ref2.black,\n pointer = _ref2.pointer,\n circle = _ref2.circle;\n\n var styles = reactCSS({\n 'default': {\n color: {\n absolute: '0px 0px 0px 0px',\n background: 'hsl(' + this.props.hsl.h + ',100%, 50%)',\n borderRadius: this.props.radius\n },\n white: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n black: {\n absolute: '0px 0px 0px 0px',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n top: -(this.props.hsv.v * 100) + 100 + '%',\n left: this.props.hsv.s * 100 + '%',\n cursor: 'default'\n },\n circle: {\n width: '4px',\n height: '4px',\n boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\\n 0 0 1px 2px rgba(0,0,0,.4)',\n borderRadius: '50%',\n cursor: 'hand',\n transform: 'translate(-2px, -2px)'\n }\n },\n 'custom': {\n color: color,\n white: white,\n black: black,\n pointer: pointer,\n circle: circle\n }\n }, { 'custom': !!this.props.style });\n\n return React.createElement(\n 'div',\n {\n style: styles.color,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'style',\n null,\n '\\n .saturation-white {\\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n }\\n .saturation-black {\\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n }\\n '\n ),\n React.createElement(\n 'div',\n { style: styles.white, className: 'saturation-white' },\n React.createElement('div', { style: styles.black, className: 'saturation-black' }),\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.circle })\n )\n )\n );\n }\n }]);\n\n return Saturation;\n}(PureComponent || Component);\n\nexport default Saturation;","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\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\nexport default arrayEach;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\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\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\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\nexport default keys;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","import each from 'lodash-es/each';\nimport tinycolor from 'tinycolor2';\n\nexport var simpleCheckForValidColor = function simpleCheckForValidColor(data) {\n var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n var checked = 0;\n var passed = 0;\n each(keysToCheck, function (letter) {\n if (data[letter]) {\n checked += 1;\n if (!isNaN(data[letter])) {\n passed += 1;\n }\n if (letter === 's' || letter === 'l') {\n var percentPatt = /^\\d+%$/;\n if (percentPatt.test(data[letter])) {\n passed += 1;\n }\n }\n }\n });\n return checked === passed ? data : false;\n};\n\nexport var toState = function toState(data, oldHue) {\n var color = data.hex ? tinycolor(data.hex) : tinycolor(data);\n var hsl = color.toHsl();\n var hsv = color.toHsv();\n var rgb = color.toRgb();\n var hex = color.toHex();\n if (hsl.s === 0) {\n hsl.h = oldHue || 0;\n hsv.h = oldHue || 0;\n }\n var transparent = hex === '000000' && rgb.a === 0;\n\n return {\n hsl: hsl,\n hex: transparent ? 'transparent' : '#' + hex,\n rgb: rgb,\n hsv: hsv,\n oldHue: data.h || oldHue || hsl.h,\n source: data.source\n };\n};\n\nexport var isValidHex = function isValidHex(hex) {\n if (hex === 'transparent') {\n return true;\n }\n // disable hex4 and hex8\n var lh = String(hex).charAt(0) === '#' ? 1 : 0;\n return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();\n};\n\nexport var getContrastingColor = function getContrastingColor(data) {\n if (!data) {\n return '#fff';\n }\n var col = toState(data);\n if (col.hex === 'transparent') {\n return 'rgba(0,0,0,0.4)';\n }\n var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n return yiq >= 128 ? '#000' : '#fff';\n};\n\nexport var red = {\n hsl: { a: 1, h: 0, l: 0.5, s: 1 },\n hex: '#ff0000',\n rgb: { r: 255, g: 0, b: 0, a: 1 },\n hsv: { h: 0, s: 1, v: 1, a: 1 }\n};\n\nexport var isvalidColorString = function isvalidColorString(string, type) {\n var stringWithoutDegree = string.replace('°', '');\n return tinycolor(type + ' (' + stringWithoutDegree + ')')._ok;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport debounce from 'lodash-es/debounce';\nimport * as color from '../../helpers/color';\n\nexport var ColorWrap = function ColorWrap(Picker) {\n var ColorPicker = function (_ref) {\n _inherits(ColorPicker, _ref);\n\n function ColorPicker(props) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this));\n\n _this.handleChange = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.setState(colors);\n _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event);\n _this.props.onChange && _this.props.onChange(colors, event);\n }\n };\n\n _this.handleSwatchHover = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event);\n }\n };\n\n _this.state = _extends({}, color.toState(props.color, 0));\n\n _this.debounce = debounce(function (fn, data, event) {\n fn(data, event);\n }, 100);\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'render',\n value: function render() {\n var optionalEvents = {};\n if (this.props.onSwatchHover) {\n optionalEvents.onSwatchHover = this.handleSwatchHover;\n }\n\n return React.createElement(Picker, _extends({}, this.props, this.state, {\n onChange: this.handleChange\n }, optionalEvents));\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n return _extends({}, color.toState(nextProps.color, state.oldHue));\n }\n }]);\n\n return ColorPicker;\n }(PureComponent || Component);\n\n ColorPicker.propTypes = _extends({}, Picker.propTypes);\n\n ColorPicker.defaultProps = _extends({}, Picker.defaultProps, {\n color: {\n h: 250,\n s: 0.50,\n l: 0.20,\n a: 1\n }\n });\n\n return ColorPicker;\n};\n\nexport default ColorWrap;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable no-invalid-this */\nimport React from 'react';\n\nexport var handleFocus = function handleFocus(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n return function (_React$Component) {\n _inherits(Focus, _React$Component);\n\n function Focus() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Focus);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () {\n return _this.setState({ focus: true });\n }, _this.handleBlur = function () {\n return _this.setState({ focus: false });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Focus, [{\n key: 'render',\n value: function render() {\n return React.createElement(\n Span,\n { onFocus: this.handleFocus, onBlur: this.handleBlur },\n React.createElement(Component, _extends({}, this.props, this.state))\n );\n }\n }]);\n\n return Focus;\n }(React.Component);\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport { handleFocus } from '../../helpers/interaction';\n\nimport Checkboard from './Checkboard';\n\nvar ENTER = 13;\n\nexport var Swatch = function Swatch(_ref) {\n var color = _ref.color,\n style = _ref.style,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onHover = _ref.onHover,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? color : _ref$title,\n children = _ref.children,\n focus = _ref.focus,\n _ref$focusStyle = _ref.focusStyle,\n focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;\n\n var transparent = color === 'transparent';\n var styles = reactCSS({\n default: {\n swatch: _extends({\n background: color,\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n outline: 'none'\n }, style, focus ? focusStyle : {})\n }\n });\n\n var handleClick = function handleClick(e) {\n return onClick(color, e);\n };\n var handleKeyDown = function handleKeyDown(e) {\n return e.keyCode === ENTER && onClick(color, e);\n };\n var handleHover = function handleHover(e) {\n return onHover(color, e);\n };\n\n var optionalEvents = {};\n if (onHover) {\n optionalEvents.onMouseOver = handleHover;\n }\n\n return React.createElement(\n 'div',\n _extends({\n style: styles.swatch,\n onClick: handleClick,\n title: title,\n tabIndex: 0,\n onKeyDown: handleKeyDown\n }, optionalEvents),\n children,\n transparent && React.createElement(Checkboard, {\n borderRadius: styles.swatch.borderRadius,\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'\n })\n );\n};\n\nexport default handleFocus(Swatch);","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { ColorWrap, Alpha } from '../common';\nimport AlphaPointer from './AlphaPointer';\n\nexport var AlphaPicker = function AlphaPicker(_ref) {\n var rgb = _ref.rgb,\n hsl = _ref.hsl,\n width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n direction = _ref.direction,\n style = _ref.style,\n renderers = _ref.renderers,\n pointer = _ref.pointer,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n alpha: {\n radius: '2px',\n style: style\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'alpha-picker ' + className },\n React.createElement(Alpha, _extends({}, styles.alpha, {\n rgb: rgb,\n hsl: hsl,\n pointer: pointer,\n renderers: renderers,\n onChange: onChange,\n direction: direction\n }))\n );\n};\n\nAlphaPicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: AlphaPointer\n};\n\nexport default ColorWrap(AlphaPicker);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var AlphaPointer = function AlphaPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default AlphaPointer;","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * 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 the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\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\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\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\nexport default getSymbols;\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\nexport default arrayFilter;\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\nexport default stubArray;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\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\nexport default getAllKeys;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\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\nexport default baseGetAllKeys;\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\nexport default arrayPush;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\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\nexport default getTag;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\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 * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport { Swatch } from '../common';\n\nexport var BlockSwatches = function BlockSwatches(_ref) {\n var colors = _ref.colors,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n marginRight: '-10px'\n },\n swatch: {\n width: '22px',\n height: '22px',\n float: 'left',\n marginRight: '10px',\n marginBottom: '10px',\n borderRadius: '4px'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.swatches },\n map(colors, function (c) {\n return React.createElement(Swatch, {\n key: c,\n color: c,\n style: styles.swatch,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n React.createElement('div', { style: styles.clear })\n );\n};\n\nexport default BlockSwatches;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Checkboard } from '../common';\nimport BlockSwatches from './BlockSwatches';\n\nexport var Block = function Block(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var transparent = hex === 'transparent';\n var handleChange = function handleChange(hexCode, e) {\n color.isValidHex(hexCode) && onChange({\n hex: hexCode,\n source: 'hex'\n }, e);\n };\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n boxShadow: '0 1px rgba(0,0,0,.1)',\n borderRadius: '6px',\n position: 'relative'\n },\n head: {\n height: '110px',\n background: hex,\n borderRadius: '6px 6px 0 0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative'\n },\n body: {\n padding: '10px'\n },\n label: {\n fontSize: '18px',\n color: color.getContrastingColor(hex),\n position: 'relative'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 10px 10px 10px',\n borderColor: 'transparent transparent ' + hex + ' transparent',\n position: 'absolute',\n top: '-10px',\n left: '50%',\n marginLeft: '-10px'\n },\n input: {\n width: '100%',\n fontSize: '12px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '22px',\n boxShadow: 'inset 0 0 0 1px #ddd',\n borderRadius: '4px',\n padding: '0 7px',\n boxSizing: 'border-box'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n }\n }\n }, passedStyles), { 'hide-triangle': triangle === 'hide' });\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'block-picker ' + className },\n React.createElement('div', { style: styles.triangle }),\n React.createElement(\n 'div',\n { style: styles.head },\n transparent && React.createElement(Checkboard, { borderRadius: '6px 6px 0 0' }),\n React.createElement(\n 'div',\n { style: styles.label },\n hex\n )\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(BlockSwatches, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }),\n React.createElement(EditableInput, {\n style: { input: styles.input },\n value: hex,\n onChange: handleChange\n })\n )\n );\n};\n\nBlock.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.string),\n triangle: PropTypes.oneOf(['top', 'hide']),\n styles: PropTypes.object\n};\n\nBlock.defaultProps = {\n width: 170,\n colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'],\n triangle: 'top',\n styles: {}\n};\n\nexport default ColorWrap(Block);","export var red = {\"50\":\"#ffebee\",\"100\":\"#ffcdd2\",\"200\":\"#ef9a9a\",\"300\":\"#e57373\",\"400\":\"#ef5350\",\"500\":\"#f44336\",\"600\":\"#e53935\",\"700\":\"#d32f2f\",\"800\":\"#c62828\",\"900\":\"#b71c1c\",\"a100\":\"#ff8a80\",\"a200\":\"#ff5252\",\"a400\":\"#ff1744\",\"a700\":\"#d50000\"};\nexport var pink = {\"50\":\"#fce4ec\",\"100\":\"#f8bbd0\",\"200\":\"#f48fb1\",\"300\":\"#f06292\",\"400\":\"#ec407a\",\"500\":\"#e91e63\",\"600\":\"#d81b60\",\"700\":\"#c2185b\",\"800\":\"#ad1457\",\"900\":\"#880e4f\",\"a100\":\"#ff80ab\",\"a200\":\"#ff4081\",\"a400\":\"#f50057\",\"a700\":\"#c51162\"};\nexport var purple = {\"50\":\"#f3e5f5\",\"100\":\"#e1bee7\",\"200\":\"#ce93d8\",\"300\":\"#ba68c8\",\"400\":\"#ab47bc\",\"500\":\"#9c27b0\",\"600\":\"#8e24aa\",\"700\":\"#7b1fa2\",\"800\":\"#6a1b9a\",\"900\":\"#4a148c\",\"a100\":\"#ea80fc\",\"a200\":\"#e040fb\",\"a400\":\"#d500f9\",\"a700\":\"#aa00ff\"};\nexport var deepPurple = {\"50\":\"#ede7f6\",\"100\":\"#d1c4e9\",\"200\":\"#b39ddb\",\"300\":\"#9575cd\",\"400\":\"#7e57c2\",\"500\":\"#673ab7\",\"600\":\"#5e35b1\",\"700\":\"#512da8\",\"800\":\"#4527a0\",\"900\":\"#311b92\",\"a100\":\"#b388ff\",\"a200\":\"#7c4dff\",\"a400\":\"#651fff\",\"a700\":\"#6200ea\"};\nexport var indigo = {\"50\":\"#e8eaf6\",\"100\":\"#c5cae9\",\"200\":\"#9fa8da\",\"300\":\"#7986cb\",\"400\":\"#5c6bc0\",\"500\":\"#3f51b5\",\"600\":\"#3949ab\",\"700\":\"#303f9f\",\"800\":\"#283593\",\"900\":\"#1a237e\",\"a100\":\"#8c9eff\",\"a200\":\"#536dfe\",\"a400\":\"#3d5afe\",\"a700\":\"#304ffe\"};\nexport var blue = {\"50\":\"#e3f2fd\",\"100\":\"#bbdefb\",\"200\":\"#90caf9\",\"300\":\"#64b5f6\",\"400\":\"#42a5f5\",\"500\":\"#2196f3\",\"600\":\"#1e88e5\",\"700\":\"#1976d2\",\"800\":\"#1565c0\",\"900\":\"#0d47a1\",\"a100\":\"#82b1ff\",\"a200\":\"#448aff\",\"a400\":\"#2979ff\",\"a700\":\"#2962ff\"};\nexport var lightBlue = {\"50\":\"#e1f5fe\",\"100\":\"#b3e5fc\",\"200\":\"#81d4fa\",\"300\":\"#4fc3f7\",\"400\":\"#29b6f6\",\"500\":\"#03a9f4\",\"600\":\"#039be5\",\"700\":\"#0288d1\",\"800\":\"#0277bd\",\"900\":\"#01579b\",\"a100\":\"#80d8ff\",\"a200\":\"#40c4ff\",\"a400\":\"#00b0ff\",\"a700\":\"#0091ea\"};\nexport var cyan = {\"50\":\"#e0f7fa\",\"100\":\"#b2ebf2\",\"200\":\"#80deea\",\"300\":\"#4dd0e1\",\"400\":\"#26c6da\",\"500\":\"#00bcd4\",\"600\":\"#00acc1\",\"700\":\"#0097a7\",\"800\":\"#00838f\",\"900\":\"#006064\",\"a100\":\"#84ffff\",\"a200\":\"#18ffff\",\"a400\":\"#00e5ff\",\"a700\":\"#00b8d4\"};\nexport var teal = {\"50\":\"#e0f2f1\",\"100\":\"#b2dfdb\",\"200\":\"#80cbc4\",\"300\":\"#4db6ac\",\"400\":\"#26a69a\",\"500\":\"#009688\",\"600\":\"#00897b\",\"700\":\"#00796b\",\"800\":\"#00695c\",\"900\":\"#004d40\",\"a100\":\"#a7ffeb\",\"a200\":\"#64ffda\",\"a400\":\"#1de9b6\",\"a700\":\"#00bfa5\"};\nexport var green = {\"50\":\"#e8f5e9\",\"100\":\"#c8e6c9\",\"200\":\"#a5d6a7\",\"300\":\"#81c784\",\"400\":\"#66bb6a\",\"500\":\"#4caf50\",\"600\":\"#43a047\",\"700\":\"#388e3c\",\"800\":\"#2e7d32\",\"900\":\"#1b5e20\",\"a100\":\"#b9f6ca\",\"a200\":\"#69f0ae\",\"a400\":\"#00e676\",\"a700\":\"#00c853\"};\nexport var lightGreen = {\"50\":\"#f1f8e9\",\"100\":\"#dcedc8\",\"200\":\"#c5e1a5\",\"300\":\"#aed581\",\"400\":\"#9ccc65\",\"500\":\"#8bc34a\",\"600\":\"#7cb342\",\"700\":\"#689f38\",\"800\":\"#558b2f\",\"900\":\"#33691e\",\"a100\":\"#ccff90\",\"a200\":\"#b2ff59\",\"a400\":\"#76ff03\",\"a700\":\"#64dd17\"};\nexport var lime = {\"50\":\"#f9fbe7\",\"100\":\"#f0f4c3\",\"200\":\"#e6ee9c\",\"300\":\"#dce775\",\"400\":\"#d4e157\",\"500\":\"#cddc39\",\"600\":\"#c0ca33\",\"700\":\"#afb42b\",\"800\":\"#9e9d24\",\"900\":\"#827717\",\"a100\":\"#f4ff81\",\"a200\":\"#eeff41\",\"a400\":\"#c6ff00\",\"a700\":\"#aeea00\"};\nexport var yellow = {\"50\":\"#fffde7\",\"100\":\"#fff9c4\",\"200\":\"#fff59d\",\"300\":\"#fff176\",\"400\":\"#ffee58\",\"500\":\"#ffeb3b\",\"600\":\"#fdd835\",\"700\":\"#fbc02d\",\"800\":\"#f9a825\",\"900\":\"#f57f17\",\"a100\":\"#ffff8d\",\"a200\":\"#ffff00\",\"a400\":\"#ffea00\",\"a700\":\"#ffd600\"};\nexport var amber = {\"50\":\"#fff8e1\",\"100\":\"#ffecb3\",\"200\":\"#ffe082\",\"300\":\"#ffd54f\",\"400\":\"#ffca28\",\"500\":\"#ffc107\",\"600\":\"#ffb300\",\"700\":\"#ffa000\",\"800\":\"#ff8f00\",\"900\":\"#ff6f00\",\"a100\":\"#ffe57f\",\"a200\":\"#ffd740\",\"a400\":\"#ffc400\",\"a700\":\"#ffab00\"};\nexport var orange = {\"50\":\"#fff3e0\",\"100\":\"#ffe0b2\",\"200\":\"#ffcc80\",\"300\":\"#ffb74d\",\"400\":\"#ffa726\",\"500\":\"#ff9800\",\"600\":\"#fb8c00\",\"700\":\"#f57c00\",\"800\":\"#ef6c00\",\"900\":\"#e65100\",\"a100\":\"#ffd180\",\"a200\":\"#ffab40\",\"a400\":\"#ff9100\",\"a700\":\"#ff6d00\"};\nexport var deepOrange = {\"50\":\"#fbe9e7\",\"100\":\"#ffccbc\",\"200\":\"#ffab91\",\"300\":\"#ff8a65\",\"400\":\"#ff7043\",\"500\":\"#ff5722\",\"600\":\"#f4511e\",\"700\":\"#e64a19\",\"800\":\"#d84315\",\"900\":\"#bf360c\",\"a100\":\"#ff9e80\",\"a200\":\"#ff6e40\",\"a400\":\"#ff3d00\",\"a700\":\"#dd2c00\"};\nexport var brown = {\"50\":\"#efebe9\",\"100\":\"#d7ccc8\",\"200\":\"#bcaaa4\",\"300\":\"#a1887f\",\"400\":\"#8d6e63\",\"500\":\"#795548\",\"600\":\"#6d4c41\",\"700\":\"#5d4037\",\"800\":\"#4e342e\",\"900\":\"#3e2723\"};\nexport var grey = {\"50\":\"#fafafa\",\"100\":\"#f5f5f5\",\"200\":\"#eeeeee\",\"300\":\"#e0e0e0\",\"400\":\"#bdbdbd\",\"500\":\"#9e9e9e\",\"600\":\"#757575\",\"700\":\"#616161\",\"800\":\"#424242\",\"900\":\"#212121\"};\nexport var blueGrey = {\"50\":\"#eceff1\",\"100\":\"#cfd8dc\",\"200\":\"#b0bec5\",\"300\":\"#90a4ae\",\"400\":\"#78909c\",\"500\":\"#607d8b\",\"600\":\"#546e7a\",\"700\":\"#455a64\",\"800\":\"#37474f\",\"900\":\"#263238\"};\nexport var darkText = {\"primary\":\"rgba(0, 0, 0, 0.87)\",\"secondary\":\"rgba(0, 0, 0, 0.54)\",\"disabled\":\"rgba(0, 0, 0, 0.38)\",\"dividers\":\"rgba(0, 0, 0, 0.12)\"};\nexport var lightText = {\"primary\":\"rgba(255, 255, 255, 1)\",\"secondary\":\"rgba(255, 255, 255, 0.7)\",\"disabled\":\"rgba(255, 255, 255, 0.5)\",\"dividers\":\"rgba(255, 255, 255, 0.12)\"};\nexport var darkIcons = {\"active\":\"rgba(0, 0, 0, 0.54)\",\"inactive\":\"rgba(0, 0, 0, 0.38)\"};\nexport var lightIcons = {\"active\":\"rgba(255, 255, 255, 1)\",\"inactive\":\"rgba(255, 255, 255, 0.5)\"};\nexport var white = \"#ffffff\";\nexport var black = \"#000000\";\n\nexport default {\n red: red,\n pink: pink,\n purple: purple,\n deepPurple: deepPurple,\n indigo: indigo,\n blue: blue,\n lightBlue: lightBlue,\n cyan: cyan,\n teal: teal,\n green: green,\n lightGreen: lightGreen,\n lime: lime,\n yellow: yellow,\n amber: amber,\n orange: orange,\n deepOrange: deepOrange,\n brown: brown,\n grey: grey,\n blueGrey: blueGrey,\n darkText: darkText,\n lightText: lightText,\n darkIcons: darkIcons,\n lightIcons: lightIcons,\n white: white,\n black: black\n};\n","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var CircleSwatch = function CircleSwatch(_ref) {\n var color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n hover = _ref.hover,\n active = _ref.active,\n circleSize = _ref.circleSize,\n circleSpacing = _ref.circleSpacing;\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n width: circleSize,\n height: circleSize,\n marginRight: circleSpacing,\n marginBottom: circleSpacing,\n transform: 'scale(1)',\n transition: '100ms transform ease'\n },\n Swatch: {\n borderRadius: '50%',\n background: 'transparent',\n boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color,\n transition: '100ms box-shadow ease'\n }\n },\n 'hover': {\n swatch: {\n transform: 'scale(1.2)'\n }\n },\n 'active': {\n Swatch: {\n boxShadow: 'inset 0 0 0 3px ' + color\n }\n }\n }, { hover: hover, active: active });\n\n return React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(Swatch, {\n style: styles.Swatch,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color }\n })\n );\n};\n\nCircleSwatch.defaultProps = {\n circleSize: 28,\n circleSpacing: 14\n};\n\nexport default handleHover(CircleSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap } from '../common';\nimport CircleSwatch from './CircleSwatch';\n\nexport var Circle = function Circle(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n circleSize = _ref.circleSize,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n circleSpacing = _ref.circleSpacing,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n display: 'flex',\n flexWrap: 'wrap',\n marginRight: -circleSpacing,\n marginBottom: -circleSpacing\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(hexCode, e) {\n return onChange({ hex: hexCode, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'circle-picker ' + className },\n map(colors, function (c) {\n return React.createElement(CircleSwatch, {\n key: c,\n color: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover,\n active: hex === c.toLowerCase(),\n circleSize: circleSize,\n circleSpacing: circleSpacing\n });\n })\n );\n};\n\nCircle.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n circleSize: PropTypes.number,\n circleSpacing: PropTypes.number,\n styles: PropTypes.object\n};\n\nCircle.defaultProps = {\n width: 252,\n circleSize: 28,\n circleSpacing: 14,\n colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']],\n styles: {}\n};\n\nexport default ColorWrap(Circle);","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable react/no-did-mount-set-state, no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport isUndefined from 'lodash-es/isUndefined';\n\nimport { EditableInput } from '../common';\nimport UnfoldMoreHorizontalIcon from '@icons/material/UnfoldMoreHorizontalIcon';\n\nexport var ChromeFields = function (_React$Component) {\n _inherits(ChromeFields, _React$Component);\n\n function ChromeFields(props) {\n _classCallCheck(this, ChromeFields);\n\n var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this));\n\n _this.toggleViews = function () {\n if (_this.state.view === 'hex') {\n _this.setState({ view: 'rgb' });\n } else if (_this.state.view === 'rgb') {\n _this.setState({ view: 'hsl' });\n } else if (_this.state.view === 'hsl') {\n if (_this.props.hsl.a === 1) {\n _this.setState({ view: 'hex' });\n } else {\n _this.setState({ view: 'rgb' });\n }\n }\n };\n\n _this.handleChange = function (data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && _this.props.onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n _this.props.onChange({\n r: data.r || _this.props.rgb.r,\n g: data.g || _this.props.rgb.g,\n b: data.b || _this.props.rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 1) {\n data.a = 1;\n }\n\n _this.props.onChange({\n h: _this.props.hsl.h,\n s: _this.props.hsl.s,\n l: _this.props.hsl.l,\n a: Math.round(data.a * 100) / 100,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.l) {\n // Remove any occurances of '%'.\n if (typeof data.s === 'string' && data.s.includes('%')) {\n data.s = data.s.replace('%', '');\n }\n if (typeof data.l === 'string' && data.l.includes('%')) {\n data.l = data.l.replace('%', '');\n }\n\n // We store HSL as a unit interval so we need to override the 1 input to 0.01\n if (data.s == 1) {\n data.s = 0.01;\n } else if (data.l == 1) {\n data.l = 0.01;\n }\n\n _this.props.onChange({\n h: data.h || _this.props.hsl.h,\n s: Number(!isUndefined(data.s) ? data.s : _this.props.hsl.s),\n l: Number(!isUndefined(data.l) ? data.l : _this.props.hsl.l),\n source: 'hsl'\n }, e);\n }\n };\n\n _this.showHighlight = function (e) {\n e.currentTarget.style.background = '#eee';\n };\n\n _this.hideHighlight = function (e) {\n e.currentTarget.style.background = 'transparent';\n };\n\n if (props.hsl.a !== 1 && props.view === \"hex\") {\n _this.state = {\n view: \"rgb\"\n };\n } else {\n _this.state = {\n view: props.view\n };\n }\n return _this;\n }\n\n _createClass(ChromeFields, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n paddingTop: '16px',\n display: 'flex'\n },\n fields: {\n flex: '1',\n display: 'flex',\n marginLeft: '-6px'\n },\n field: {\n paddingLeft: '6px',\n width: '100%'\n },\n alpha: {\n paddingLeft: '6px',\n width: '100%'\n },\n toggle: {\n width: '32px',\n textAlign: 'right',\n position: 'relative'\n },\n icon: {\n marginRight: '-4px',\n marginTop: '12px',\n cursor: 'pointer',\n position: 'relative'\n },\n iconHighlight: {\n position: 'absolute',\n width: '24px',\n height: '28px',\n background: '#eee',\n borderRadius: '4px',\n top: '10px',\n left: '12px',\n display: 'none'\n },\n input: {\n fontSize: '11px',\n color: '#333',\n width: '100%',\n borderRadius: '2px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #dadada',\n height: '21px',\n textAlign: 'center'\n },\n label: {\n textTransform: 'uppercase',\n fontSize: '11px',\n lineHeight: '11px',\n color: '#969696',\n textAlign: 'center',\n display: 'block',\n marginTop: '12px'\n },\n svg: {\n fill: '#333',\n width: '24px',\n height: '24px',\n border: '1px transparent solid',\n borderRadius: '5px'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, this.props, this.state);\n\n var fields = void 0;\n if (this.state.view === 'hex') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex', value: this.props.hex,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'rgb') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: this.props.rgb.r,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: this.props.rgb.g,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: this.props.rgb.b,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.rgb.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'hsl') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'h',\n value: Math.round(this.props.hsl.h),\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 's',\n value: Math.round(this.props.hsl.s * 100) + '%',\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'l',\n value: Math.round(this.props.hsl.l * 100) + '%',\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.hsl.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n }\n\n return React.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n fields,\n React.createElement(\n 'div',\n { style: styles.toggle },\n React.createElement(\n 'div',\n { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) {\n return _this2.icon = icon;\n } },\n React.createElement(UnfoldMoreHorizontalIcon, {\n style: styles.svg,\n onMouseOver: this.showHighlight,\n onMouseEnter: this.showHighlight,\n onMouseOut: this.hideHighlight\n })\n )\n )\n );\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n if (nextProps.hsl.a !== 1 && state.view === 'hex') {\n return { view: 'rgb' };\n }\n return null;\n }\n }]);\n\n return ChromeFields;\n}(React.Component);\n\nChromeFields.defaultProps = {\n view: \"hex\"\n};\n\nexport default ChromeFields;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointer = function ChromePointer() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n transform: 'translate(-6px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointerCircle = function ChromePointerCircle() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointerCircle;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport ChromeFields from './ChromeFields';\nimport ChromePointer from './ChromePointer';\nimport ChromePointerCircle from './ChromePointerCircle';\n\nexport var Chrome = function Chrome(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n disableAlpha = _ref.disableAlpha,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className,\n defaultView = _ref.defaultView;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n borderRadius: '2px',\n boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)',\n boxSizing: 'initial',\n fontFamily: 'Menlo'\n },\n saturation: {\n width: '100%',\n paddingBottom: '55%',\n position: 'relative',\n borderRadius: '2px 2px 0 0',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '2px 2px 0 0'\n },\n body: {\n padding: '16px 16px 12px'\n },\n controls: {\n display: 'flex'\n },\n color: {\n width: '32px'\n },\n swatch: {\n marginTop: '6px',\n width: '16px',\n height: '16px',\n borderRadius: '8px',\n position: 'relative',\n overflow: 'hidden'\n },\n active: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '8px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')',\n zIndex: '2'\n },\n toggles: {\n flex: '1'\n },\n hue: {\n height: '10px',\n position: 'relative',\n marginBottom: '8px'\n },\n Hue: {\n radius: '2px'\n },\n alpha: {\n height: '10px',\n position: 'relative'\n },\n Alpha: {\n radius: '2px'\n }\n },\n 'disableAlpha': {\n color: {\n width: '22px'\n },\n alpha: {\n display: 'none'\n },\n hue: {\n marginBottom: '0px'\n },\n swatch: {\n width: '10px',\n height: '10px',\n marginTop: '0px'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'chrome-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n pointer: ChromePointerCircle,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.color },\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement('div', { style: styles.active }),\n React.createElement(Checkboard, { renderers: renderers })\n )\n ),\n React.createElement(\n 'div',\n { style: styles.toggles },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: ChromePointer,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n pointer: ChromePointer,\n renderers: renderers,\n onChange: onChange\n })\n )\n )\n ),\n React.createElement(ChromeFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n view: defaultView,\n onChange: onChange,\n disableAlpha: disableAlpha\n })\n )\n );\n};\n\nChrome.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disableAlpha: PropTypes.bool,\n styles: PropTypes.object,\n defaultView: PropTypes.oneOf([\"hex\", \"rgb\", \"hsl\"])\n};\n\nChrome.defaultProps = {\n width: 225,\n disableAlpha: false,\n styles: {}\n};\n\nexport default ColorWrap(Chrome);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\n\nexport var CompactColor = function CompactColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n color: {\n background: color,\n width: '15px',\n height: '15px',\n float: 'left',\n marginRight: '5px',\n marginBottom: '5px',\n position: 'relative',\n cursor: 'pointer'\n },\n dot: {\n absolute: '5px 5px 5px 5px',\n background: colorUtils.getContrastingColor(color),\n borderRadius: '50%',\n opacity: '0'\n }\n },\n 'active': {\n dot: {\n opacity: '1'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n dot: {\n background: '#000'\n }\n },\n 'transparent': {\n dot: {\n background: '#000'\n }\n }\n }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' });\n\n return React.createElement(\n Swatch,\n {\n style: styles.color,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n React.createElement('div', { style: styles.dot })\n );\n};\n\nexport default CompactColor;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { EditableInput } from '../common';\n\nexport var CompactFields = function CompactFields(_ref) {\n var hex = _ref.hex,\n rgb = _ref.rgb,\n onChange = _ref.onChange;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n display: 'flex',\n paddingBottom: '6px',\n paddingRight: '5px',\n position: 'relative'\n },\n active: {\n position: 'absolute',\n top: '6px',\n left: '5px',\n height: '9px',\n width: '9px',\n background: hex\n },\n HEXwrap: {\n flex: '6',\n position: 'relative'\n },\n HEXinput: {\n width: '80%',\n padding: '0px',\n paddingLeft: '20%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n HEXlabel: {\n display: 'none'\n },\n RGBwrap: {\n flex: '3',\n position: 'relative'\n },\n RGBinput: {\n width: '70%',\n padding: '0px',\n paddingLeft: '30%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '3px',\n left: '0px',\n lineHeight: '16px',\n textTransform: 'uppercase',\n fontSize: '12px',\n color: '#999'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else {\n onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement('div', { style: styles.active }),\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n );\n};\n\nexport default CompactFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, Raised } from '../common';\nimport CompactColor from './CompactColor';\nimport CompactFields from './CompactFields';\n\nexport var Compact = function Compact(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n Compact: {\n background: '#f6f6f6',\n radius: '4px'\n },\n compact: {\n paddingTop: '5px',\n paddingLeft: '5px',\n boxSizing: 'initial',\n width: '240px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else {\n onChange(data, e);\n }\n };\n\n return React.createElement(\n Raised,\n { style: styles.Compact, styles: passedStyles },\n React.createElement(\n 'div',\n { style: styles.compact, className: 'compact-picker ' + className },\n React.createElement(\n 'div',\n null,\n map(colors, function (c) {\n return React.createElement(CompactColor, {\n key: c,\n color: c,\n active: c.toLowerCase() === hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n React.createElement('div', { style: styles.clear })\n ),\n React.createElement(CompactFields, { hex: hex, rgb: rgb, onChange: handleChange })\n )\n );\n};\n\nCompact.propTypes = {\n colors: PropTypes.arrayOf(PropTypes.string),\n styles: PropTypes.object\n};\n\nCompact.defaultProps = {\n colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'],\n styles: {}\n};\n\nexport default ColorWrap(Compact);","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var GithubSwatch = function GithubSwatch(_ref) {\n var hover = _ref.hover,\n color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var hoverSwatch = {\n position: 'relative',\n zIndex: '2',\n outline: '2px solid #fff',\n boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)'\n };\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n width: '25px',\n height: '25px',\n fontSize: '0'\n }\n },\n 'hover': {\n swatch: hoverSwatch\n }\n }, { hover: hover });\n\n return React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(Swatch, {\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: hoverSwatch\n })\n );\n};\n\nexport default handleHover(GithubSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap } from '../common';\nimport GithubSwatch from './GithubSwatch';\n\nexport var Github = function Github(_ref) {\n var width = _ref.width,\n colors = _ref.colors,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '1px solid rgba(0,0,0,0.2)',\n boxShadow: '0 3px 12px rgba(0,0,0,0.15)',\n borderRadius: '4px',\n position: 'relative',\n padding: '5px',\n display: 'flex',\n flexWrap: 'wrap'\n },\n triangle: {\n position: 'absolute',\n border: '7px solid transparent',\n borderBottomColor: '#fff'\n },\n triangleShadow: {\n position: 'absolute',\n border: '8px solid transparent',\n borderBottomColor: 'rgba(0,0,0,0.15)'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-14px',\n left: '10px'\n },\n triangleShadow: {\n top: '-16px',\n left: '9px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-14px',\n right: '10px'\n },\n triangleShadow: {\n top: '-16px',\n right: '9px'\n }\n },\n 'bottom-left-triangle': {\n triangle: {\n top: '35px',\n left: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n left: '9px',\n transform: 'rotate(180deg)'\n }\n },\n 'bottom-right-triangle': {\n triangle: {\n top: '35px',\n right: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n right: '9px',\n transform: 'rotate(180deg)'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right',\n 'bottom-left-triangle': triangle === 'bottom-left',\n 'bottom-right-triangle': triangle === 'bottom-right'\n });\n\n var handleChange = function handleChange(hex, e) {\n return onChange({ hex: hex, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'github-picker ' + className },\n React.createElement('div', { style: styles.triangleShadow }),\n React.createElement('div', { style: styles.triangle }),\n map(colors, function (c) {\n return React.createElement(GithubSwatch, {\n color: c,\n key: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nGithub.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.string),\n triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']),\n styles: PropTypes.object\n};\n\nGithub.defaultProps = {\n width: 200,\n colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n triangle: 'top-left',\n styles: {}\n};\n\nexport default ColorWrap(Github);","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport HuePointer from './HuePointer';\n\nexport var HuePicker = function HuePicker(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n hsl = _ref.hsl,\n direction = _ref.direction,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n // Overwrite to provide pure hue color\n var handleChange = function handleChange(data) {\n return onChange({ a: 1, h: data.h, l: 0.5, s: 1 });\n };\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'hue-picker ' + className },\n React.createElement(Hue, _extends({}, styles.hue, {\n hsl: hsl,\n pointer: pointer,\n onChange: handleChange,\n direction: direction\n }))\n );\n};\n\nHuePicker.propTypes = {\n styles: PropTypes.object\n};\nHuePicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: HuePointer,\n styles: {}\n};\n\nexport default ColorWrap(HuePicker);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Raised } from '../common';\n\nexport var Material = function Material(_ref) {\n var onChange = _ref.onChange,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n material: {\n width: '98px',\n height: '98px',\n padding: '16px',\n fontFamily: 'Roboto'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '2px solid ' + hex,\n outline: 'none',\n height: '30px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n Hex: {\n style: {}\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '1px solid #eee',\n outline: 'none',\n height: '30px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n split: {\n display: 'flex',\n marginRight: '-10px',\n paddingTop: '11px'\n },\n third: {\n flex: '1',\n paddingRight: '10px'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n }\n };\n\n return React.createElement(\n Raised,\n { styles: passedStyles },\n React.createElement(\n 'div',\n { style: styles.material, className: 'material-picker ' + className },\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n React.createElement(\n 'div',\n { style: styles.split, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r', value: rgb.r,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexport default ColorWrap(Material);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var PhotoshopPicker = function PhotoshopPicker(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsv = _ref.hsv,\n hex = _ref.hex;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n paddingTop: '5px',\n paddingBottom: '9px',\n width: '80px',\n position: 'relative'\n },\n divider: {\n height: '5px'\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n marginLeft: '40%',\n width: '40%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '5px',\n fontSize: '13px',\n paddingLeft: '3px',\n marginRight: '10px'\n },\n RGBlabel: {\n left: '0px',\n top: '0px',\n width: '34px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px',\n position: 'absolute'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n marginLeft: '20%',\n width: '80%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '6px',\n fontSize: '13px',\n paddingLeft: '3px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n width: '14px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px'\n },\n fieldSymbols: {\n position: 'absolute',\n top: '5px',\n right: '-7px',\n fontSize: '13px'\n },\n symbol: {\n height: '20px',\n lineHeight: '22px',\n paddingBottom: '7px'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data['#']) {\n color.isValidHex(data['#']) && onChange({\n hex: data['#'],\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.v) {\n onChange({\n h: data.h || hsv.h,\n s: data.s || hsv.s,\n v: data.v || hsv.v,\n source: 'hsv'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'h',\n value: Math.round(hsv.h),\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 's',\n value: Math.round(hsv.s * 100),\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'v',\n value: Math.round(hsv.v * 100),\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.divider }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.divider }),\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: '#',\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n React.createElement(\n 'div',\n { style: styles.fieldSymbols },\n React.createElement(\n 'div',\n { style: styles.symbol },\n '\\xB0'\n ),\n React.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n ),\n React.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n )\n )\n );\n};\n\nexport default PhotoshopPicker;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) {\n var hsl = _ref.hsl;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n },\n 'black-outline': {\n picker: {\n boxShadow: 'inset 0 0 0 1px #000'\n }\n }\n }, { 'black-outline': hsl.l > 0.5 });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle() {\n var styles = reactCSS({\n 'default': {\n triangle: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '4px 0 4px 6px',\n borderColor: 'transparent transparent transparent #fff',\n position: 'absolute',\n top: '1px',\n left: '1px'\n },\n triangleBorder: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '5px 0 5px 8px',\n borderColor: 'transparent transparent transparent #555'\n },\n\n left: {\n Extend: 'triangleBorder',\n transform: 'translate(-13px, -4px)'\n },\n leftInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n },\n\n right: {\n Extend: 'triangleBorder',\n transform: 'translate(20px, -14px) rotate(180deg)'\n },\n rightInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.pointer },\n React.createElement(\n 'div',\n { style: styles.left },\n React.createElement('div', { style: styles.leftInside })\n ),\n React.createElement(\n 'div',\n { style: styles.right },\n React.createElement('div', { style: styles.rightInside })\n )\n );\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopButton = function PhotoshopButton(_ref) {\n var onClick = _ref.onClick,\n label = _ref.label,\n children = _ref.children,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n button: {\n backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)',\n border: '1px solid #878787',\n borderRadius: '2px',\n height: '20px',\n boxShadow: '0 1px 0 0 #EAEAEA',\n fontSize: '14px',\n color: '#000',\n lineHeight: '20px',\n textAlign: 'center',\n marginBottom: '10px',\n cursor: 'pointer'\n }\n },\n 'active': {\n button: {\n boxShadow: '0 0 0 1px #878787'\n }\n }\n }, { active: active });\n\n return React.createElement(\n 'div',\n { style: styles.button, onClick: onClick },\n label || children\n );\n};\n\nexport default PhotoshopButton;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPreviews = function PhotoshopPreviews(_ref) {\n var rgb = _ref.rgb,\n currentColor = _ref.currentColor;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n border: '1px solid #B3B3B3',\n borderBottom: '1px solid #F0F0F0',\n marginBottom: '2px',\n marginTop: '1px'\n },\n new: {\n height: '34px',\n background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')',\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000'\n },\n current: {\n height: '34px',\n background: currentColor,\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000'\n },\n label: {\n fontSize: '14px',\n color: '#000',\n textAlign: 'center'\n }\n }\n });\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { style: styles.label },\n 'new'\n ),\n React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement('div', { style: styles.new }),\n React.createElement('div', { style: styles.current })\n ),\n React.createElement(\n 'div',\n { style: styles.label },\n 'current'\n )\n );\n};\n\nexport default PhotoshopPreviews;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport PhotoshopFields from './PhotoshopFields';\nimport PhotoshopPointerCircle from './PhotoshopPointerCircle';\nimport PhotoshopPointer from './PhotoshopPointer';\nimport PhotoshopButton from './PhotoshopButton';\nimport PhotoshopPreviews from './PhotoshopPreviews';\n\nexport var Photoshop = function (_React$Component) {\n _inherits(Photoshop, _React$Component);\n\n function Photoshop(props) {\n _classCallCheck(this, Photoshop);\n\n var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this));\n\n _this.state = {\n currentColor: props.hex\n };\n return _this;\n }\n\n _createClass(Photoshop, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n _props$styles = _props.styles,\n passedStyles = _props$styles === undefined ? {} : _props$styles,\n _props$className = _props.className,\n className = _props$className === undefined ? '' : _props$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n background: '#DCDCDC',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)',\n boxSizing: 'initial',\n width: '513px'\n },\n head: {\n backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)',\n borderBottom: '1px solid #B1B1B1',\n boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)',\n height: '23px',\n lineHeight: '24px',\n borderRadius: '4px 4px 0 0',\n fontSize: '13px',\n color: '#4D4D4D',\n textAlign: 'center'\n },\n body: {\n padding: '15px 15px 0',\n display: 'flex'\n },\n saturation: {\n width: '256px',\n height: '256px',\n position: 'relative',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0',\n overflow: 'hidden'\n },\n hue: {\n position: 'relative',\n height: '256px',\n width: '19px',\n marginLeft: '10px',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0'\n },\n controls: {\n width: '180px',\n marginLeft: '10px'\n },\n top: {\n display: 'flex'\n },\n previews: {\n width: '60px'\n },\n actions: {\n flex: '1',\n marginLeft: '20px'\n }\n }\n }, passedStyles));\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'photoshop-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.head },\n this.props.header\n ),\n React.createElement(\n 'div',\n { style: styles.body, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n hsl: this.props.hsl,\n hsv: this.props.hsv,\n pointer: PhotoshopPointerCircle,\n onChange: this.props.onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n direction: 'vertical',\n hsl: this.props.hsl,\n pointer: PhotoshopPointer,\n onChange: this.props.onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.controls },\n React.createElement(\n 'div',\n { style: styles.top, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.previews },\n React.createElement(PhotoshopPreviews, {\n rgb: this.props.rgb,\n currentColor: this.state.currentColor\n })\n ),\n React.createElement(\n 'div',\n { style: styles.actions },\n React.createElement(PhotoshopButton, { label: 'OK', onClick: this.props.onAccept, active: true }),\n React.createElement(PhotoshopButton, { label: 'Cancel', onClick: this.props.onCancel }),\n React.createElement(PhotoshopFields, {\n onChange: this.props.onChange,\n rgb: this.props.rgb,\n hsv: this.props.hsv,\n hex: this.props.hex\n })\n )\n )\n )\n )\n );\n }\n }]);\n\n return Photoshop;\n}(React.Component);\n\nPhotoshop.propTypes = {\n header: PropTypes.string,\n styles: PropTypes.object\n};\n\nPhotoshop.defaultProps = {\n header: 'Color Picker',\n styles: {}\n};\n\nexport default ColorWrap(Photoshop);","/* eslint-disable no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var SketchFields = function SketchFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n disableAlpha = _ref.disableAlpha;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n display: 'flex',\n paddingTop: '4px'\n },\n single: {\n flex: '1',\n paddingLeft: '6px'\n },\n alpha: {\n flex: '1',\n paddingLeft: '6px'\n },\n double: {\n flex: '2'\n },\n input: {\n width: '80%',\n padding: '4px 10% 3px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #ccc',\n fontSize: '11px'\n },\n label: {\n display: 'block',\n textAlign: 'center',\n fontSize: '11px',\n color: '#222',\n paddingTop: '3px',\n paddingBottom: '4px',\n textTransform: 'capitalize'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, { disableAlpha: disableAlpha });\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n a: rgb.a,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 100) {\n data.a = 100;\n }\n\n data.a /= 100;\n onChange({\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: data.a,\n source: 'rgb'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.double },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex.replace('#', ''),\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: rgb.r,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: rgb.g,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: rgb.b,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: Math.round(rgb.a * 100),\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '100'\n })\n )\n );\n};\n\nexport default SketchFields;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var SketchPresetColors = function SketchPresetColors(_ref) {\n var colors = _ref.colors,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = reactCSS({\n 'default': {\n colors: {\n margin: '0 -10px',\n padding: '10px 0 0 10px',\n borderTop: '1px solid #eee',\n display: 'flex',\n flexWrap: 'wrap',\n position: 'relative'\n },\n swatchWrap: {\n width: '16px',\n height: '16px',\n margin: '0 10px 10px 0'\n },\n swatch: {\n borderRadius: '3px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)'\n }\n },\n 'no-presets': {\n colors: {\n display: 'none'\n }\n }\n }, {\n 'no-presets': !colors || !colors.length\n });\n\n var handleClick = function handleClick(hex, e) {\n onClick({\n hex: hex,\n source: 'hex'\n }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.colors, className: 'flexbox-fix' },\n colors.map(function (colorObjOrString) {\n var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString;\n var key = '' + c.color + (c.title || '');\n return React.createElement(\n 'div',\n { key: key, style: styles.swatchWrap },\n React.createElement(Swatch, _extends({}, c, {\n style: styles.swatch,\n onClick: handleClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color\n }\n }))\n );\n })\n );\n};\n\nSketchPresetColors.propTypes = {\n colors: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n color: PropTypes.string,\n title: PropTypes.string\n })])).isRequired\n};\n\nexport default SketchPresetColors;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport SketchFields from './SketchFields';\nimport SketchPresetColors from './SketchPresetColors';\n\nexport var Sketch = function Sketch(_ref) {\n var width = _ref.width,\n rgb = _ref.rgb,\n hex = _ref.hex,\n hsv = _ref.hsv,\n hsl = _ref.hsl,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n disableAlpha = _ref.disableAlpha,\n presetColors = _ref.presetColors,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': _extends({\n picker: {\n width: width,\n padding: '10px 10px 0',\n boxSizing: 'initial',\n background: '#fff',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)'\n },\n saturation: {\n width: '100%',\n paddingBottom: '75%',\n position: 'relative',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '3px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n controls: {\n display: 'flex'\n },\n sliders: {\n padding: '4px 0',\n flex: '1'\n },\n color: {\n width: '24px',\n height: '24px',\n position: 'relative',\n marginTop: '4px',\n marginLeft: '4px',\n borderRadius: '3px'\n },\n activeColor: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '2px',\n background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n hue: {\n position: 'relative',\n height: '10px',\n overflow: 'hidden'\n },\n Hue: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n\n alpha: {\n position: 'relative',\n height: '10px',\n marginTop: '4px',\n overflow: 'hidden'\n },\n Alpha: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n }\n }, passedStyles),\n 'disableAlpha': {\n color: {\n height: '10px'\n },\n hue: {\n height: '10px'\n },\n alpha: {\n display: 'none'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'sketch-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.sliders },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n renderers: renderers,\n onChange: onChange\n })\n )\n ),\n React.createElement(\n 'div',\n { style: styles.color },\n React.createElement(Checkboard, null),\n React.createElement('div', { style: styles.activeColor })\n )\n ),\n React.createElement(SketchFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n onChange: onChange,\n disableAlpha: disableAlpha\n }),\n React.createElement(SketchPresetColors, {\n colors: presetColors,\n onClick: onChange,\n onSwatchHover: onSwatchHover\n })\n );\n};\n\nSketch.propTypes = {\n disableAlpha: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n styles: PropTypes.object\n};\n\nSketch.defaultProps = {\n disableAlpha: false,\n width: 200,\n styles: {},\n presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF']\n};\n\nexport default ColorWrap(Sketch);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderSwatch = function SliderSwatch(_ref) {\n var hsl = _ref.hsl,\n offset = _ref.offset,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n active = _ref.active,\n first = _ref.first,\n last = _ref.last;\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n height: '12px',\n background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)',\n cursor: 'pointer'\n }\n },\n 'first': {\n swatch: {\n borderRadius: '2px 0 0 2px'\n }\n },\n 'last': {\n swatch: {\n borderRadius: '0 2px 2px 0'\n }\n },\n 'active': {\n swatch: {\n transform: 'scaleY(1.8)',\n borderRadius: '3.6px/2px'\n }\n }\n }, { active: active, first: first, last: last });\n\n var handleClick = function handleClick(e) {\n return onClick({\n h: hsl.h,\n s: 0.5,\n l: offset,\n source: 'hsl'\n }, e);\n };\n\n return React.createElement('div', { style: styles.swatch, onClick: handleClick });\n};\n\nexport default SliderSwatch;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport SliderSwatch from './SliderSwatch';\n\nexport var SliderSwatches = function SliderSwatches(_ref) {\n var onClick = _ref.onClick,\n hsl = _ref.hsl;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n marginTop: '20px'\n },\n swatch: {\n boxSizing: 'border-box',\n width: '20%',\n paddingRight: '1px',\n float: 'left'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n // Acceptible difference in floating point equality\n var epsilon = 0.1;\n\n return React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.80',\n active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n first: true\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.65',\n active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.50',\n active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.35',\n active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.20',\n active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n last: true\n })\n ),\n React.createElement('div', { style: styles.clear })\n );\n};\n\nexport default SliderSwatches;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport SliderSwatches from './SliderSwatches';\nimport SliderPointer from './SliderPointer';\n\nexport var Slider = function Slider(_ref) {\n var hsl = _ref.hsl,\n onChange = _ref.onChange,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n hue: {\n height: '12px',\n position: 'relative'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n return React.createElement(\n 'div',\n { style: styles.wrap || {}, className: 'slider-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: pointer,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement(SliderSwatches, { hsl: hsl, onClick: onChange })\n )\n );\n};\n\nSlider.propTypes = {\n styles: PropTypes.object\n};\nSlider.defaultProps = {\n pointer: SliderPointer,\n styles: {}\n};\n\nexport default ColorWrap(Slider);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '14px',\n height: '14px',\n borderRadius: '6px',\n transform: 'translate(-7px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\nimport CheckIcon from '@icons/material/CheckIcon';\n\nexport var SwatchesColor = function SwatchesColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n first = _ref.first,\n last = _ref.last,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n color: {\n width: '40px',\n height: '24px',\n cursor: 'pointer',\n background: color,\n marginBottom: '1px'\n },\n check: {\n color: colorUtils.getContrastingColor(color),\n marginLeft: '8px',\n display: 'none'\n }\n },\n 'first': {\n color: {\n overflow: 'hidden',\n borderRadius: '2px 2px 0 0'\n }\n },\n 'last': {\n color: {\n overflow: 'hidden',\n borderRadius: '0 0 2px 2px'\n }\n },\n 'active': {\n check: {\n display: 'block'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n check: {\n color: '#333'\n }\n },\n 'transparent': {\n check: {\n color: '#333'\n }\n }\n }, {\n first: first,\n last: last,\n active: active,\n 'color-#FFFFFF': color === '#FFFFFF',\n 'transparent': color === 'transparent'\n });\n\n return React.createElement(\n Swatch,\n {\n color: color,\n style: styles.color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n React.createElement(\n 'div',\n { style: styles.check },\n React.createElement(CheckIcon, null)\n )\n );\n};\n\nexport default SwatchesColor;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport SwatchesColor from './SwatchesColor';\n\nexport var SwatchesGroup = function SwatchesGroup(_ref) {\n var onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n group = _ref.group,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n group: {\n paddingBottom: '10px',\n width: '40px',\n float: 'left',\n marginRight: '10px'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.group },\n map(group, function (color, i) {\n return React.createElement(SwatchesColor, {\n key: color,\n color: color,\n active: color.toLowerCase() === active,\n first: i === 0,\n last: i === group.length - 1,\n onClick: onClick,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nexport default SwatchesGroup;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap, Raised } from '../common';\nimport SwatchesGroup from './SwatchesGroup';\n\nexport var Swatches = function Swatches(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n height: height\n },\n overflow: {\n height: height,\n overflowY: 'scroll'\n },\n body: {\n padding: '16px 0 6px 16px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n return onChange({ hex: data, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'swatches-picker ' + className },\n React.createElement(\n Raised,\n null,\n React.createElement(\n 'div',\n { style: styles.overflow },\n React.createElement(\n 'div',\n { style: styles.body },\n map(colors, function (group) {\n return React.createElement(SwatchesGroup, {\n key: group.toString(),\n group: group,\n active: hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n React.createElement('div', { style: styles.clear })\n )\n )\n )\n );\n};\n\nSwatches.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n styles: PropTypes.object\n\n /* eslint-disable max-len */\n};Swatches.defaultProps = {\n width: 320,\n height: 240,\n colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']],\n styles: {}\n};\n\nexport default ColorWrap(Swatches);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Swatch } from '../common';\n\nexport var Twitter = function Twitter(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '0 solid rgba(0,0,0,0.25)',\n boxShadow: '0 1px 4px rgba(0,0,0,0.25)',\n borderRadius: '4px',\n position: 'relative'\n },\n body: {\n padding: '15px 9px 9px 15px'\n },\n label: {\n fontSize: '18px',\n color: '#fff'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent #fff transparent',\n position: 'absolute'\n },\n triangleShadow: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent rgba(0,0,0,.1) transparent',\n position: 'absolute'\n },\n hash: {\n background: '#F0F0F0',\n height: '30px',\n width: '30px',\n borderRadius: '4px 0 0 4px',\n float: 'left',\n color: '#98A1A4',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n input: {\n width: '100px',\n fontSize: '14px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '28px',\n boxShadow: 'inset 0 0 0 1px #F0F0F0',\n boxSizing: 'content-box',\n borderRadius: '0 4px 4px 0',\n float: 'left',\n paddingLeft: '8px'\n },\n swatch: {\n width: '30px',\n height: '30px',\n float: 'left',\n borderRadius: '4px',\n margin: '0 6px 6px 0'\n },\n clear: {\n clear: 'both'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-10px',\n left: '12px'\n },\n triangleShadow: {\n top: '-11px',\n left: '12px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-10px',\n right: '12px'\n },\n triangleShadow: {\n top: '-11px',\n right: '12px'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right'\n });\n\n var handleChange = function handleChange(hexcode, e) {\n color.isValidHex(hexcode) && onChange({\n hex: hexcode,\n source: 'hex'\n }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'twitter-picker ' + className },\n React.createElement('div', { style: styles.triangleShadow }),\n React.createElement('div', { style: styles.triangle }),\n React.createElement(\n 'div',\n { style: styles.body },\n map(colors, function (c, i) {\n return React.createElement(Swatch, {\n key: i,\n color: c,\n hex: c,\n style: styles.swatch,\n onClick: handleChange,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n React.createElement(\n 'div',\n { style: styles.hash },\n '#'\n ),\n React.createElement(EditableInput, {\n label: null,\n style: { input: styles.input },\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.clear })\n )\n );\n};\n\nTwitter.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right']),\n colors: PropTypes.arrayOf(PropTypes.string),\n styles: PropTypes.object\n};\n\nTwitter.defaultProps = {\n width: 276,\n colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'],\n triangle: 'top-left',\n styles: {}\n};\n\nexport default ColorWrap(Twitter);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointerCircle = function GooglePointerCircle(props) {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n border: '2px #fff solid',\n transform: 'translate(-12px, -13px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointerCircle.propTypes = {\n hsl: PropTypes.shape({\n h: PropTypes.number,\n s: PropTypes.number,\n l: PropTypes.number,\n a: PropTypes.number\n })\n};\n\nGooglePointerCircle.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointer = function GooglePointer(props) {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n transform: 'translate(-10px, -7px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)',\n border: '2px white solid'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointer.propTypes = {\n hsl: PropTypes.shape({\n h: PropTypes.number,\n s: PropTypes.number,\n l: PropTypes.number,\n a: PropTypes.number\n })\n};\n\nGooglePointer.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport { EditableInput } from '../common';\n\nexport var GoogleFields = function GoogleFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n hsv = _ref.hsv;\n\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.rgb) {\n var values = data.rgb.split(',');\n color.isvalidColorString(data.rgb, 'rgb') && onChange({\n r: values[0],\n g: values[1],\n b: values[2],\n a: 1,\n source: 'rgb'\n }, e);\n } else if (data.hsv) {\n var _values = data.hsv.split(',');\n if (color.isvalidColorString(data.hsv, 'hsv')) {\n _values[2] = _values[2].replace('%', '');\n _values[1] = _values[1].replace('%', '');\n _values[0] = _values[0].replace('°', '');\n if (_values[1] == 1) {\n _values[1] = 0.01;\n } else if (_values[2] == 1) {\n _values[2] = 0.01;\n }\n onChange({\n h: Number(_values[0]),\n s: Number(_values[1]),\n v: Number(_values[2]),\n source: 'hsv'\n }, e);\n }\n } else if (data.hsl) {\n var _values2 = data.hsl.split(',');\n if (color.isvalidColorString(data.hsl, 'hsl')) {\n _values2[2] = _values2[2].replace('%', '');\n _values2[1] = _values2[1].replace('%', '');\n _values2[0] = _values2[0].replace('°', '');\n if (hsvValue[1] == 1) {\n hsvValue[1] = 0.01;\n } else if (hsvValue[2] == 1) {\n hsvValue[2] = 0.01;\n }\n onChange({\n h: Number(_values2[0]),\n s: Number(_values2[1]),\n v: Number(_values2[2]),\n source: 'hsl'\n }, e);\n }\n }\n };\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n display: 'flex',\n height: '100px',\n marginTop: '4px'\n },\n fields: {\n width: '100%'\n },\n column: {\n paddingTop: '10px',\n display: 'flex',\n justifyContent: 'space-between'\n },\n double: {\n padding: '0px 4.4px',\n boxSizing: 'border-box'\n },\n input: {\n width: '100%',\n height: '38px',\n boxSizing: 'border-box',\n padding: '4px 10% 3px',\n textAlign: 'center',\n border: '1px solid #dadce0',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n input2: {\n height: '38px',\n width: '100%',\n border: '1px solid #dadce0',\n boxSizing: 'border-box',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n paddingLeft: '10px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label: {\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '35px',\n top: '-6px',\n left: '0',\n right: '0',\n marginLeft: 'auto',\n marginRight: 'auto',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label2: {\n left: '10px',\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '32px',\n top: '-6px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n single: {\n flexGrow: '1',\n margin: '0px 4.4px'\n }\n }\n });\n\n var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b;\n var hslValue = Math.round(hsl.h) + '\\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%';\n var hsvValue = Math.round(hsv.h) + '\\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%';\n\n return React.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.fields },\n React.createElement(\n 'div',\n { style: styles.double },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.column },\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'rgb',\n value: rgbValue,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsv',\n value: hsvValue,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsl',\n value: hslValue,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexport default GoogleFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport GooglePointerCircle from './GooglePointerCircle';\nimport GooglePointer from './GooglePointer';\nimport GoogleFields from './GoogleFields';\n\nexport var Google = function Google(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n header = _ref.header,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n border: '1px solid #dfe1e5',\n boxSizing: 'initial',\n display: 'flex',\n flexWrap: 'wrap',\n borderRadius: '8px 8px 0px 0px'\n },\n head: {\n height: '57px',\n width: '100%',\n paddingTop: '16px',\n paddingBottom: '16px',\n paddingLeft: '16px',\n fontSize: '20px',\n boxSizing: 'border-box',\n fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif'\n },\n saturation: {\n width: '70%',\n padding: '0px',\n position: 'relative',\n overflow: 'hidden'\n },\n swatch: {\n width: '30%',\n height: '228px',\n padding: '0px',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)',\n position: 'relative',\n overflow: 'hidden'\n },\n body: {\n margin: 'auto',\n width: '95%'\n },\n controls: {\n display: 'flex',\n boxSizing: 'border-box',\n height: '52px',\n paddingTop: '22px'\n },\n color: {\n width: '32px'\n },\n hue: {\n height: '8px',\n position: 'relative',\n margin: '0px 16px 0px 16px',\n width: '100%'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'google-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.head },\n header\n ),\n React.createElement('div', { style: styles.swatch }),\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n hsl: hsl,\n hsv: hsv,\n pointer: GooglePointerCircle,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n radius: '4px',\n pointer: GooglePointer,\n onChange: onChange\n })\n )\n ),\n React.createElement(GoogleFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n hsv: hsv,\n onChange: onChange\n })\n )\n );\n};\n\nGoogle.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n styles: PropTypes.object,\n header: PropTypes.string\n\n};\n\nGoogle.defaultProps = {\n width: 652,\n styles: {},\n header: 'Color picker'\n};\n\nexport default ColorWrap(Google);","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nvar Draggable = /*#__PURE__*/function (_React$Component) {\n _inherits(Draggable, _React$Component);\n\n var _super = _createSuper(Draggable);\n\n function Draggable(props\n /*: DraggableProps*/\n ) {\n var _this;\n\n _classCallCheck(this, Draggable);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, coreData) {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n\n if (shouldStart === false) return false;\n\n _this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, coreData) {\n if (!_this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n var uiData = (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData);\n var newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (_this.props.bounds) {\n // Save original x and y.\n var x = newState.x,\n y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += _this.state.slackX;\n newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n var _getBoundPosition = (0, _positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y),\n _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n newStateX = _getBoundPosition2[0],\n newStateY = _getBoundPosition2[1];\n\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = _this.state.slackX + (x - newState.x);\n newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - _this.state.x;\n uiData.deltaY = newState.y - _this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n var shouldUpdate = _this.props.onDrag(e, uiData);\n\n if (shouldUpdate === false) return false;\n\n _this.setState(newState);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, coreData) {\n if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n var shouldContinue = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData));\n\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n var newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n var controlled = Boolean(_this.props.position);\n\n if (controlled) {\n var _this$props$position = _this.props.position,\n x = _this$props$position.x,\n y = _this$props$position.y;\n newState.x = x;\n newState.y = y;\n }\n\n _this.setState(newState);\n });\n\n _this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: _objectSpread({}, props.position),\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n\n return _this;\n }\n\n _createClass(Draggable, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n\n }, {\n key: \"findDOMNode\",\n value: function findDOMNode()\n /*: ?HTMLElement*/\n {\n var _this$props$nodeRef$c, _this$props, _this$props$nodeRef;\n\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$nodeRef = _this$props.nodeRef) === null || _this$props$nodeRef === void 0 ? void 0 : _this$props$nodeRef.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n }, {\n key: \"render\",\n value: function render()\n /*: ReactElement*/\n {\n var _clsx;\n\n var _this$props2 = this.props,\n axis = _this$props2.axis,\n bounds = _this$props2.bounds,\n children = _this$props2.children,\n defaultPosition = _this$props2.defaultPosition,\n defaultClassName = _this$props2.defaultClassName,\n defaultClassNameDragging = _this$props2.defaultClassNameDragging,\n defaultClassNameDragged = _this$props2.defaultClassNameDragged,\n position = _this$props2.position,\n positionOffset = _this$props2.positionOffset,\n scale = _this$props2.scale,\n draggableCoreProps = _objectWithoutProperties(_this$props2, _excluded);\n\n var style = {};\n var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n var controlled = Boolean(position);\n var draggable = !controlled || this.state.dragging;\n var validPosition = position || defaultPosition;\n var transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n var className = (0, _clsx2.default)(children.props.className || '', defaultClassName, (_clsx = {}, _defineProperty(_clsx, defaultClassNameDragging, this.state.dragging), _defineProperty(_clsx, defaultClassNameDragged, this.state.dragged), _clsx)); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n className: className,\n style: _objectSpread(_objectSpread({}, children.props.style), style),\n transform: svgTransform\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: // React 16.3+\n // Arity (props, state)\n function getDerivedStateFromProps(_ref, _ref2)\n /*: ?$Shape*/\n {\n var position = _ref.position;\n var prevPropsPosition = _ref2.prevPropsPosition;\n\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position: position,\n prevPropsPosition: prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: _objectSpread({}, position)\n };\n }\n\n return null;\n }\n }]);\n\n return Draggable;\n}(React.Component);\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, {\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n}));\n\n_defineProperty(Draggable, \"defaultProps\", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, {\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n scale: 1\n}));","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nvar eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nvar dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreDefaultProps = {\n allowAnyClick: boolean,\n disabled: boolean,\n enableUserSelectHack: boolean,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n};*/\n\n/*:: export type DraggableCoreProps = {\n ...DraggableCoreDefaultProps,\n cancel: string,\n children: ReactElement,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nvar DraggableCore = /*#__PURE__*/function (_React$Component) {\n _inherits(DraggableCore, _React$Component);\n\n var _super = _createSuper(DraggableCore);\n\n function DraggableCore() {\n var _this;\n\n _classCallCheck(this, DraggableCore);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"handleDragStart\", function (e) {\n // Make it possible to attach event handlers on top of this one.\n _this.props.onMouseDown(e); // Only accept left-clicks.\n\n\n if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n var thisNode = _this.findDOMNode();\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n return;\n } // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n\n\n if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\n _this.setState({\n touchIdentifier: touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n\n var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return; // not possible but satisfies flow\n\n var x = position.x,\n y = position.y; // Create an event object with all the data parents need to make a decision here.\n\n var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', _this.props.onStart);\n\n var shouldUpdate = _this.props.onStart(e, coreEvent);\n\n if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n _this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n // Get the current drag point from the event. This is used as the offset.\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return;\n var x = position.x,\n y = position.y; // Snap to grid if prop has been provided\n\n if (Array.isArray(_this.props.grid)) {\n var deltaX = x - _this.state.lastX,\n deltaY = y - _this.state.lastY;\n\n var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n deltaX = _snapToGrid2[0];\n deltaY = _snapToGrid2[1];\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n }\n\n var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false || _this.mounted === false) {\n try {\n // $FlowIgnore\n _this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n var event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n _this.handleDragStop(event);\n }\n\n return;\n }\n\n _this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDragStop\", function (e) {\n if (!_this.state.dragging) return;\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return;\n var x = position.x,\n y = position.y; // Snap to grid if prop has been provided\n\n if (Array.isArray(_this.props.grid)) {\n var deltaX = x - _this.state.lastX || 0;\n var deltaY = y - _this.state.lastY || 0;\n\n var _snapToGrid3 = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n var _snapToGrid4 = _slicedToArray(_snapToGrid3, 2);\n\n deltaX = _snapToGrid4[0];\n deltaY = _snapToGrid4[1];\n x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n }\n\n var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler\n\n var shouldContinue = _this.props.onStop(e, coreEvent);\n\n if (shouldContinue === false || _this.mounted === false) return false;\n\n var thisNode = _this.findDOMNode();\n\n if (thisNode) {\n // Remove user-select hack\n if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n _this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return _this.handleDragStart(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n dragEventFor = eventsFor.mouse;\n return _this.handleDragStop(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return _this.handleDragStart(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return _this.handleDragStop(e);\n });\n\n return _this;\n }\n\n _createClass(DraggableCore, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n var thisNode = this.findDOMNode();\n\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\n var thisNode = this.findDOMNode();\n\n if (thisNode) {\n var ownerDocument = thisNode.ownerDocument;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n\n }, {\n key: \"findDOMNode\",\n value: function findDOMNode()\n /*: ?HTMLElement*/\n {\n var _this$props, _this$props2, _this$props2$nodeRef;\n\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$nodeRef = _this$props2.nodeRef) === null || _this$props2$nodeRef === void 0 ? void 0 : _this$props2$nodeRef.current : _reactDom.default.findDOMNode(this);\n }\n }, {\n key: \"render\",\n value: function render()\n /*: React.Element*/\n {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n }]);\n\n return DraggableCore;\n}(React.Component);\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function offsetParent(props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * \n *
Example Target
\n *
\n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function onStart() {},\n onDrag: function onDrag() {},\n onStop: function onStop() {},\n onMouseDown: function onMouseDown() {},\n scale: 1\n});","\"use strict\";\n\nvar _require = require('./Draggable'),\n Draggable = _require.default,\n DraggableCore = _require.DraggableCore; // Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\n\n\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n var node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n\n var options = _objectSpread({\n capture: true\n }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n\n var options = _objectSpread({\n capture: true\n }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n/*:: interface EventWithOffset {\n clientX: number, clientY: number\n}*/\n\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt\n/*: EventWithOffset*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\n)\n/*: ControlPosition*/\n{\n var isBody = offsetParent === offsetParent.ownerDocument.body;\n var offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x: x,\n y: y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n var translation = getTranslation(controlPos, positionOffset, 'px');\n return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation);\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n var translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation(_ref2, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n var x = _ref2.x,\n y = _ref2.y;\n var translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n\n if (positionOffset) {\n var defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n var defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n return identifier === t.identifier;\n }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n return identifier === t.identifier;\n });\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n var styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n var selection = (doc.defaultView || window).getSelection();\n\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix()\n/*: string*/\n{\n var _window$document, _window$document$docu;\n\n var prop\n /*: string*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n // Ensure we're running in an environment where there is actually a global\n // `window` obj\n if (typeof window === 'undefined') return ''; // If we're in a pseudo-browser server-side environment, this access\n // path may not exist, so bail out if it doesn't.\n\n var style = (_window$document = window.document) === null || _window$document === void 0 ? void 0 : (_window$document$docu = _window$document.documentElement) === null || _window$document$docu === void 0 ? void 0 : _window$document$docu.style;\n if (!style) return '';\n if (prop in style) return '';\n\n for (var i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n var out = '';\n var shouldCapitalize = true;\n\n for (var i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = (getPrefix()\n/*: string*/\n);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n var _console;\n\n if (undefined) (_console = console).log.apply(_console, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\n\nvar _shims = require(\"./shims\");\n\nvar _domFns = require(\"./domFns\");\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n var bounds = draggable.props.bounds;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n var node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n var ownerDocument = node.ownerDocument;\n var ownerWindow = ownerDocument.defaultView;\n var boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n var boundNodeEl\n /*: HTMLElement*/\n = boundNode; // for Flow, can't seem to refine correctly\n\n var nodeStyle = ownerWindow.getComputedStyle(node);\n var boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n var x = Math.round(pendingX / grid[0]) * grid[0];\n var y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n var state = draggable.state;\n var isStart = !(0, _shims.isNum)(state.lastX);\n var node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node: node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x: x,\n y: y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node: node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x: x,\n y: y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n var scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n var node = draggable.findDOMNode();\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (var i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean %checks*/\n{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean %checks*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n)\n/*: ?Error*/\n{\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.ImageGallery=t(require(\"react\")):e.ImageGallery=t(e.React)}(this,(function(e){return(()=>{var t={703:(e,t,n)=>{\"use strict\";var i=n(414);function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,a,s){if(s!==i){var o=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw o.name=\"Invariant Violation\",o}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:r};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},590:e=>{var t=\"undefined\"!=typeof Element,n=\"function\"==typeof Map,i=\"function\"==typeof Set,r=\"function\"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,s){if(e===s)return!0;if(e&&s&&\"object\"==typeof e&&\"object\"==typeof s){if(e.constructor!==s.constructor)return!1;var o,l,u,c;if(Array.isArray(e)){if((o=e.length)!=s.length)return!1;for(l=o;0!=l--;)if(!a(e[l],s[l]))return!1;return!0}if(n&&e instanceof Map&&s instanceof Map){if(e.size!==s.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!s.has(l.value[0]))return!1;for(c=e.entries();!(l=c.next()).done;)if(!a(l.value[1],s.get(l.value[0])))return!1;return!0}if(i&&e instanceof Set&&s instanceof Set){if(e.size!==s.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!s.has(l.value[0]))return!1;return!0}if(r&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(s)){if((o=e.length)!=s.length)return!1;for(l=o;0!=l--;)if(e[l]!==s[l])return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===s.toString();if((o=(u=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(l=o;0!=l--;)if(!Object.prototype.hasOwnProperty.call(s,u[l]))return!1;if(t&&e instanceof Element)return!1;for(l=o;0!=l--;)if((\"_owner\"!==u[l]&&\"__v\"!==u[l]&&\"__o\"!==u[l]||!e.$$typeof)&&!a(e[u[l]],s[u[l]]))return!1;return!0}return e!=e&&s!=s}e.exports=function(e,t){try{return a(e,t)}catch(e){if((e.message||\"\").match(/stack|recursion/i))return console.warn(\"react-fast-compare cannot handle circular refs\"),!1;throw e}}},37:function(e,t,n){!function(e,t){function n(){return n=Object.assign||function(e){for(var t=1;t1||e((function(e,i){i.trackMouse&&(document.addEventListener(l,h),document.addEventListener(u,f));var r=\"touches\"in t?t.touches[0]:t,a=c([r.clientX,r.clientY],i.rotationAngle);return n({},e,o,{initial:[].concat(a),xy:a,start:t.timeStamp||0})}))},h=function(t){e((function(e,s){if(\"touches\"in t&&t.touches.length>1)return e;var o=\"touches\"in t?t.touches[0]:t,l=c([o.clientX,o.clientY],s.rotationAngle),u=l[0],h=l[1],d=u-e.xy[0],f=h-e.xy[1],p=Math.abs(d),m=Math.abs(f),g=(t.timeStamp||0)-e.start,v=Math.sqrt(p*p+m*m)/(g||1),b=[d/(g||1),f/(g||1)];if(pt?n>0?r:i:s>0?a:\"Up\"}(p,m,d,f),w={absX:p,absY:m,deltaX:d,deltaY:f,dir:y,event:t,first:e.first,initial:e.initial,velocity:v,vxvy:b};s.onSwiping&&s.onSwiping(w);var T=!1;return(s.onSwiping||s.onSwiped||\"onSwiped\"+y in s)&&(T=!0),T&&s.preventDefaultTouchmoveEvent&&s.trackTouch&&t.cancelable&&t.preventDefault(),n({},e,{first:!1,eventData:w,swiping:!0})}))},d=function(t){e((function(e,i){var r;if(e.swiping&&e.eventData){r=n({},e.eventData,{event:t}),i.onSwiped&&i.onSwiped(r);var a=\"onSwiped\"+r.dir;a in i&&i[a](r)}else i.onTap&&i.onTap({event:t});return n({},e,o,{eventData:r})}))},f=function(e){document.removeEventListener(l,h),document.removeEventListener(u,f),d(e)},p=function(e,t){var n=function(){};if(e&&e.addEventListener){var i=[[\"touchstart\",s],[\"touchmove\",h],[\"touchend\",d]];i.forEach((function(n){var i=n[0],r=n[1];return e.addEventListener(i,r,{passive:t})})),n=function(){return i.forEach((function(t){var n=t[0],i=t[1];return e.removeEventListener(n,i)}))}}return n},m={ref:function(t){null!==t&&e((function(e,i){if(e.el===t)return e;var r={};return e.el&&e.el!==t&&e.cleanUpTouch&&(e.cleanUpTouch(),r.cleanUpTouch=void 0),i.trackTouch&&t&&(r.cleanUpTouch=p(t,!i.preventDefaultTouchmoveEvent)),n({},e,{el:t},r)}))}};return t.trackMouse&&(m.onMouseDown=s),[m,p]}e.DOWN=a,e.LEFT=i,e.RIGHT=r,e.UP=\"Up\",e.useSwipeable=function(e){var i=e.trackMouse,r=t.useRef(n({},o)),a=t.useRef(n({},s));a.current=n({},s,e);var l=t.useMemo((function(){return h((function(e){return r.current=e(r.current,a.current)}),{trackMouse:i})}),[i]),u=l[0],c=l[1];return r.current=function(e,t,i){var r={};return!t.trackTouch&&e.cleanUpTouch?(e.cleanUpTouch(),r.cleanUpTouch=void 0):t.trackTouch&&!e.cleanUpTouch&&e.el&&(r.cleanUpTouch=i(e.el,!t.preventDefaultTouchmoveEvent)),n({},e,r)}(r.current,a.current,c),u}}(t,n(888))},888:t=>{\"use strict\";t.exports=e}},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}};return t[e].call(a.exports,a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var r={};return(()=>{\"use strict\";function e(t){var n,i,r=\"\";if(\"string\"==typeof t||\"number\"==typeof t)r+=t;else if(\"object\"==typeof t)if(Array.isArray(t))for(n=0;nPe});var n=i(888),a=i.n(n);const s=function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)},o=\"object\"==typeof global&&global&&global.Object===Object&&global;var l=\"object\"==typeof self&&self&&self.Object===Object&&self;const u=o||l||Function(\"return this\")(),c=function(){return u.Date.now()};var h=/\\s/;var d=/^\\s+/;const f=function(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&h.test(e.charAt(t)););return t}(e)+1).replace(d,\"\"):e},p=u.Symbol;var m=Object.prototype,g=m.hasOwnProperty,v=m.toString,b=p?p.toStringTag:void 0;var y=Object.prototype.toString;var w=p?p.toStringTag:void 0;const T=function(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":w&&w in Object(e)?function(e){var t=g.call(e,b),n=e[b];try{e[b]=void 0;var i=!0}catch(e){}var r=v.call(e);return i&&(t?e[b]=n:delete e[b]),r}(e):function(e){return y.call(e)}(e)};var S=/^[-+]0x[0-9a-f]+$/i,O=/^0b[01]+$/i,E=/^0o[0-7]+$/i,k=parseInt;const I=function(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return null!=e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==T(e)}(e))return NaN;if(s(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=s(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=f(e);var n=O.test(e);return n||E.test(e)?k(e.slice(2),n?2:8):S.test(e)?NaN:+e};var x=Math.max,_=Math.min;const R=function(e,t,n){var i,r,a,o,l,u,h=0,d=!1,f=!1,p=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var n=i,a=r;return i=r=void 0,h=t,o=e.apply(a,n)}function g(e){return h=e,l=setTimeout(b,t),d?m(e):o}function v(e){var n=e-u;return void 0===u||n>=t||n<0||f&&e-h>=a}function b(){var e=c();if(v(e))return y(e);l=setTimeout(b,function(e){var n=t-(e-u);return f?_(n,a-(e-h)):n}(e))}function y(e){return l=void 0,p&&i?m(e):(i=r=void 0,o)}function w(){var e=c(),n=v(e);if(i=arguments,r=this,u=e,n){if(void 0===l)return g(u);if(f)return clearTimeout(l),l=setTimeout(b,t),m(u)}return void 0===l&&(l=setTimeout(b,t)),o}return t=I(t)||0,s(n)&&(d=!!n.leading,a=(f=\"maxWait\"in n)?x(I(n.maxWait)||0,t):a,p=\"trailing\"in n?!!n.trailing:p),w.cancel=function(){void 0!==l&&clearTimeout(l),h=0,i=u=r=l=void 0},w.flush=function(){return void 0===l?o:y(c())},w},L=function(e,t,n){var i=!0,r=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");return s(n)&&(i=\"leading\"in n?!!n.leading:i,r=\"trailing\"in n?!!n.trailing:r),R(e,t,{leading:i,maxWait:t,trailing:r})};var P=i(590),M=i.n(P),W=function(){if(\"undefined\"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,i){return e[0]===t&&(n=i,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),i=this.__entries__[n];return i&&i[1]},t.prototype.set=function(t,n){var i=e(this.__entries__,t);~i?this.__entries__[i][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,i=e(n,t);~i&&n.splice(i,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,i=this.__entries__;n0},e.prototype.connect_=function(){D&&!this.connected_&&(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),z?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){D&&this.connected_&&(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?\"\":t;N.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),B=function(e,t){for(var n=0,i=Object.keys(t);n0},e}(),J=\"undefined\"!=typeof WeakMap?new WeakMap:new W,Q=function e(t){if(!(this instanceof e))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=j.getInstance(),i=new $(t,n,this);J.set(this,i)};[\"observe\",\"unobserve\",\"disconnect\"].forEach((function(e){Q.prototype[e]=function(){var t;return(t=J.get(this))[e].apply(t,arguments)}}));const Z=void 0!==F.ResizeObserver?F.ResizeObserver:Q;var ee=i(37),te=i(697),ne=a().memo((function(e){var t=e.description,n=e.fullscreen,i=e.handleImageLoaded,r=e.isFullscreen,s=e.onImageError,o=e.original,l=e.originalAlt,u=e.originalHeight,c=e.originalWidth,h=e.originalTitle,d=e.sizes,f=e.srcSet,p=e.loading,m=r&&n||o;return a().createElement(a().Fragment,null,a().createElement(\"img\",{className:\"image-gallery-image\",src:m,alt:l,srcSet:f,height:u,width:c,sizes:d,title:h,onLoad:function(e){return i(e,o)},onError:s,loading:p}),t&&a().createElement(\"span\",{className:\"image-gallery-description\"},t))}));ne.displayName=\"Item\",ne.propTypes={description:te.string,fullscreen:te.string,handleImageLoaded:te.func.isRequired,isFullscreen:te.bool,onImageError:te.func.isRequired,original:te.string.isRequired,originalAlt:te.string,originalHeight:te.string,originalWidth:te.string,originalTitle:te.string,sizes:te.string,srcSet:te.string,loading:te.string},ne.defaultProps={description:\"\",fullscreen:\"\",isFullscreen:!1,originalAlt:\"\",originalHeight:\"\",originalWidth:\"\",originalTitle:\"\",sizes:\"\",srcSet:\"\",loading:\"eager\"};const ie=ne;var re={left:a().createElement(\"polyline\",{points:\"15 18 9 12 15 6\"}),right:a().createElement(\"polyline\",{points:\"9 18 15 12 9 6\"}),maximize:a().createElement(\"path\",{d:\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"}),minimize:a().createElement(\"path\",{d:\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\"}),play:a().createElement(\"polygon\",{points:\"5 3 19 12 5 21 5 3\"}),pause:a().createElement(a().Fragment,null,a().createElement(\"rect\",{x:\"6\",y:\"4\",width:\"4\",height:\"16\"}),a().createElement(\"rect\",{x:\"14\",y:\"4\",width:\"4\",height:\"16\"}))},ae=function(e){var t=e.strokeWidth,n=e.viewBox,i=e.icon;return a().createElement(\"svg\",{className:\"image-gallery-svg\",xmlns:\"http://www.w3.org/2000/svg\",viewBox:n,fill:\"none\",stroke:\"currentColor\",strokeWidth:t,strokeLinecap:\"round\",strokeLinejoin:\"round\"},re[i])};ae.propTypes={strokeWidth:te.number,viewBox:te.string,icon:(0,te.oneOf)([\"left\",\"right\",\"maximize\",\"minimize\",\"play\",\"pause\"]).isRequired},ae.defaultProps={strokeWidth:1,viewBox:\"0 0 24 24\"};const se=ae;var oe=a().memo((function(e){var t=e.isFullscreen,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-fullscreen-button\",onClick:n,\"aria-label\":\"Open Fullscreen\"},a().createElement(se,{strokeWidth:2,icon:t?\"minimize\":\"maximize\"}))}));oe.displayName=\"Fullscreen\",oe.propTypes={isFullscreen:te.bool.isRequired,onClick:te.func.isRequired};const le=oe;var ue=a().memo((function(e){var t=e.disabled,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-left-nav\",disabled:t,onClick:n,\"aria-label\":\"Previous Slide\"},a().createElement(se,{icon:\"left\",viewBox:\"6 0 12 24\"}))}));ue.displayName=\"LeftNav\",ue.propTypes={disabled:te.bool.isRequired,onClick:te.func.isRequired};const ce=ue;var he=a().memo((function(e){var t=e.disabled,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-right-nav\",disabled:t,onClick:n,\"aria-label\":\"Next Slide\"},a().createElement(se,{icon:\"right\",viewBox:\"6 0 12 24\"}))}));he.displayName=\"RightNav\",he.propTypes={disabled:te.bool.isRequired,onClick:te.func.isRequired};const de=he;var fe=a().memo((function(e){var t=e.isPlaying,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-play-button\",onClick:n,\"aria-label\":\"Play or Pause Slideshow\"},a().createElement(se,{strokeWidth:2,icon:t?\"pause\":\"play\"}))}));fe.displayName=\"PlayPause\",fe.propTypes={isPlaying:te.bool.isRequired,onClick:te.func.isRequired};const pe=fe;function me(){return me=Object.assign||function(e){for(var t=1;t=3&&i&&(0===e&&t===r.length-1?a=\" \".concat(o):e===r.length-1&&0===t&&(a=\" \".concat(s))),a}},{key:\"getTranslateXForTwoSlide\",value:function(e){var t=this.state,n=t.currentIndex,i=t.currentSlideOffset,r=t.previousIndex,a=n!==r,s=0===e&&0===r,o=1===e&&1===r,l=0===e&&1===n,u=1===e&&0===n,c=0===i,h=-100*n+100*e+i;return i>0?this.direction=\"left\":i<0&&(this.direction=\"right\"),u&&i>0&&(h=-100+i),l&&i<0&&(h=100+i),a?s&&c&&\"left\"===this.direction?h=100:o&&c&&\"right\"===this.direction&&(h=-100):(u&&c&&\"left\"===this.direction&&(h=-100),l&&c&&\"right\"===this.direction&&(h=100)),h}},{key:\"getThumbnailBarHeight\",value:function(){return this.isThumbnailVertical()?{height:this.state.gallerySlideWrapperHeight}:{}}},{key:\"getSlideStyle\",value:function(e){var t=this.state,n=t.currentIndex,i=t.currentSlideOffset,r=t.slideStyle,a=this.props,s=a.infinite,o=a.items,l=a.useTranslate3D,u=a.isRTL,c=-100*n,h=o.length-1,d=(c+100*e)*(u?-1:1)+i;s&&o.length>2&&(0===n&&e===h?d=-100*(u?-1:1)+i:n===h&&0===e&&(d=100*(u?-1:1)+i)),s&&2===o.length&&(d=this.getTranslateXForTwoSlide(e));var f=\"translate(\".concat(d,\"%, 0)\");return l&&(f=\"translate3d(\".concat(d,\"%, 0, 0)\")),we({display:this.isSlideVisible(e)?\"inherit\":\"none\",WebkitTransform:f,MozTransform:f,msTransform:f,OTransform:f,transform:f},r)}},{key:\"getCurrentIndex\",value:function(){return this.state.currentIndex}},{key:\"getThumbnailStyle\",value:function(){var e,t=this.props,n=t.useTranslate3D,i=t.isRTL,r=this.state,a=r.thumbsTranslate,s=r.thumbsStyle,o=i?-1*a:a;return this.isThumbnailVertical()?(e=\"translate(0, \".concat(a,\"px)\"),n&&(e=\"translate3d(0, \".concat(a,\"px, 0)\"))):(e=\"translate(\".concat(o,\"px, 0)\"),n&&(e=\"translate3d(\".concat(o,\"px, 0, 0)\"))),we({WebkitTransform:e,MozTransform:e,msTransform:e,OTransform:e,transform:e},s)}},{key:\"getSlideItems\",value:function(){var e=this,n=this.state.currentIndex,i=this.props,r=i.items,s=i.slideOnThumbnailOver,o=i.onClick,l=i.lazyLoad,u=i.onTouchMove,c=i.onTouchEnd,h=i.onTouchStart,d=i.onMouseOver,f=i.onMouseLeave,p=i.renderItem,m=i.renderThumbInner,g=i.showThumbnails,v=i.showBullets,b=[],y=[],w=[];return r.forEach((function(i,r){var T=e.getAlignmentClassName(r),S=i.originalClass?\" \".concat(i.originalClass):\"\",O=i.thumbnailClass?\" \".concat(i.thumbnailClass):\"\",E=i.renderItem||p||e.renderItem,k=i.renderThumbInner||m||e.renderThumbInner,I=!l||T||e.lazyLoaded[r];I&&l&&!e.lazyLoaded[r]&&(e.lazyLoaded[r]=!0);var x=e.getSlideStyle(r),_=a().createElement(\"div\",{\"aria-label\":\"Go to Slide \".concat(r+1),key:\"slide-\".concat(r),tabIndex:\"-1\",className:\"image-gallery-slide \".concat(T,\" \").concat(S),style:x,onClick:o,onKeyUp:e.handleSlideKeyUp,onTouchMove:u,onTouchEnd:c,onTouchStart:h,onMouseOver:d,onFocus:d,onMouseLeave:f,role:\"button\"},I?E(i):a().createElement(\"div\",{style:{height:\"100%\"}}));if(b.push(_),g&&i.thumbnail){var R=t(\"image-gallery-thumbnail\",O,{active:n===r});y.push(a().createElement(\"button\",{key:\"thumbnail-\".concat(r),type:\"button\",tabIndex:\"0\",\"aria-pressed\":n===r?\"true\":\"false\",\"aria-label\":\"Go to Slide \".concat(r+1),className:R,onMouseLeave:s?e.onThumbnailMouseLeave:null,onMouseOver:function(t){return e.handleThumbnailMouseOver(t,r)},onFocus:function(t){return e.handleThumbnailMouseOver(t,r)},onKeyUp:function(t){return e.handleThumbnailKeyUp(t,r)},onClick:function(t){return e.onThumbnailClick(t,r)}},k(i)))}if(v){var L=t(\"image-gallery-bullet\",i.bulletClass,{active:n===r});w.push(a().createElement(\"button\",{type:\"button\",key:\"bullet-\".concat(r),className:L,onClick:function(t){return i.bulletOnClick&&i.bulletOnClick({item:i,itemIndex:r,currentIndex:n}),t.target.blur(),e.slideToIndex.call(e,r,t)},\"aria-pressed\":n===r?\"true\":\"false\",\"aria-label\":\"Go to Slide \".concat(r+1)}))}})),{slides:b,thumbnails:y,bullets:w}}},{key:\"ignoreIsTransitioning\",value:function(){var e=this.props.items,t=this.state,n=t.previousIndex,i=t.currentIndex,r=e.length-1;return Math.abs(n-i)>1&&!(0===n&&i===r)&&!(n===r&&0===i)}},{key:\"isFirstOrLastSlide\",value:function(e){return e===this.props.items.length-1||0===e}},{key:\"slideIsTransitioning\",value:function(e){var t=this.state,n=t.isTransitioning,i=t.previousIndex,r=t.currentIndex;return n&&!(e===i||e===r)}},{key:\"isSlideVisible\",value:function(e){return!this.slideIsTransitioning(e)||this.ignoreIsTransitioning()&&!this.isFirstOrLastSlide(e)}},{key:\"slideThumbnailBar\",value:function(){var e=this.state,t=e.currentIndex,n=e.isSwipingThumbnail,i=-this.getThumbsTranslate(t);n||(0===t?this.setState({thumbsTranslate:0,thumbsSwipedTranslate:0}):this.setState({thumbsTranslate:i,thumbsSwipedTranslate:i}))}},{key:\"canSlide\",value:function(){return this.props.items.length>=2}},{key:\"canSlideLeft\",value:function(){var e=this.props,t=e.infinite,n=e.isRTL;return t||(n?this.canSlideNext():this.canSlidePrevious())}},{key:\"canSlideRight\",value:function(){var e=this.props,t=e.infinite,n=e.isRTL;return t||(n?this.canSlidePrevious():this.canSlideNext())}},{key:\"canSlidePrevious\",value:function(){return this.state.currentIndex>0}},{key:\"canSlideNext\",value:function(){return this.state.currentIndex=100&&(p=100);var m={transition:\"transform \".concat(d,\"ms ease-out\")};this.setState({currentSlideOffset:f*p,slideStyle:m})}}}else c||this.setState({swipingUpDown:!0})}},{key:\"handleThumbnailSwiping\",value:function(e){var t=e.event,n=e.absX,i=e.absY,r=e.dir,a=this.props,s=a.stopPropagation,o=a.swipingThumbnailTransitionDuration,l=this.state,u=l.thumbsSwipedTranslate,c=l.thumbnailsWrapperHeight,h=l.thumbnailsWrapperWidth,d=l.swipingUpDown,f=l.swipingLeftRight;if(this.isThumbnailVertical()){if((r===ee.LEFT||r===ee.RIGHT||f)&&!d)return void(f||this.setState({swipingLeftRight:!0}));r!==ee.UP&&r!==ee.DOWN||d||this.setState({swipingUpDown:!0})}else{if((r===ee.UP||r===ee.DOWN||d)&&!f)return void(d||this.setState({swipingUpDown:!0}));r!==ee.LEFT&&r!==ee.RIGHT||f||this.setState({swipingLeftRight:!0})}var p,m,g,v,b,y=this.thumbnails&&this.thumbnails.current;if(this.isThumbnailVertical()?(p=u+(r===ee.DOWN?i:-i),m=y.scrollHeight-c+20,g=Math.abs(p)>m,v=p>20,b=y.scrollHeight<=c):(p=u+(r===ee.RIGHT?n:-n),m=y.scrollWidth-h+20,g=Math.abs(p)>m,v=p>20,b=y.scrollWidth<=h),!b&&(r!==ee.LEFT&&r!==ee.UP||!g)&&(r!==ee.RIGHT&&r!==ee.DOWN||!v)){s&&t.stopPropagation();var w={transition:\"transform \".concat(o,\"ms ease-out\")};this.setState({thumbsTranslate:p,thumbsStyle:w})}}},{key:\"handleOnThumbnailSwiped\",value:function(){var e=this.state.thumbsTranslate,t=this.props.slideDuration;this.resetSwipingDirection(),this.setState({isSwipingThumbnail:!0,thumbsSwipedTranslate:e,thumbsStyle:{transition:\"all \".concat(t,\"ms ease-out\")}})}},{key:\"sufficientSwipe\",value:function(){var e=this.state.currentSlideOffset,t=this.props.swipeThreshold;return Math.abs(e)>t}},{key:\"resetSwipingDirection\",value:function(){var e=this.state,t=e.swipingUpDown,n=e.swipingLeftRight;t&&this.setState({swipingUpDown:!1}),n&&this.setState({swipingLeftRight:!1})}},{key:\"handleOnSwiped\",value:function(e){var t=e.event,n=e.dir,i=e.velocity,r=this.props,a=r.disableSwipe,s=r.stopPropagation,o=r.flickThreshold;if(!a){var l=this.props.isRTL;s&&t.stopPropagation(),this.resetSwipingDirection();var u=(n===ee.LEFT?1:-1)*(l?-1:1),c=n===ee.UP||n===ee.DOWN,h=i>o&&!c;this.handleOnSwipedTo(u,h)}}},{key:\"handleOnSwipedTo\",value:function(e,t){var n=this.state,i=n.currentIndex,r=n.isTransitioning,a=i;!this.sufficientSwipe()&&!t||r||(a+=e),(-1===e&&!this.canSlideLeft()||1===e&&!this.canSlideRight())&&(a=i),this.unthrottledSlideToIndex(a)}},{key:\"handleTouchMove\",value:function(e){this.state.swipingLeftRight&&e.preventDefault()}},{key:\"handleMouseDown\",value:function(){this.imageGallery.current.classList.add(\"image-gallery-using-mouse\")}},{key:\"handleKeyDown\",value:function(e){var t=this.props,n=t.disableKeyDown,i=t.useBrowserFullscreen,r=this.state.isFullscreen;if(this.imageGallery.current.classList.remove(\"image-gallery-using-mouse\"),!n)switch(parseInt(e.keyCode||e.which||0,10)){case 37:this.canSlideLeft()&&!this.playPauseIntervalId&&this.slideLeft(e);break;case 39:this.canSlideRight()&&!this.playPauseIntervalId&&this.slideRight(e);break;case 27:r&&!i&&this.exitFullScreen()}}},{key:\"handleImageError\",value:function(e){var t=this.props.onErrorImageURL;t&&-1===e.target.src.indexOf(t)&&(e.target.src=t)}},{key:\"removeThumbnailsResizeObserver\",value:function(){this.resizeThumbnailWrapperObserver&&this.thumbnailsWrapper&&this.thumbnailsWrapper.current&&(this.resizeThumbnailWrapperObserver.unobserve(this.thumbnailsWrapper.current),this.resizeThumbnailWrapperObserver=null)}},{key:\"removeResizeObserver\",value:function(){this.resizeSlideWrapperObserver&&this.imageGallerySlideWrapper&&this.imageGallerySlideWrapper.current&&(this.resizeSlideWrapperObserver.unobserve(this.imageGallerySlideWrapper.current),this.resizeSlideWrapperObserver=null),this.removeThumbnailsResizeObserver()}},{key:\"handleResize\",value:function(){var e=this.state.currentIndex;this.imageGallery&&(this.imageGallery&&this.imageGallery.current&&this.setState({galleryWidth:this.imageGallery.current.offsetWidth}),this.imageGallerySlideWrapper&&this.imageGallerySlideWrapper.current&&this.setState({gallerySlideWrapperHeight:this.imageGallerySlideWrapper.current.offsetHeight}),this.setThumbsTranslate(-this.getThumbsTranslate(e)))}},{key:\"initSlideWrapperResizeObserver\",value:function(e){var t=this;e&&!e.current||(this.resizeSlideWrapperObserver=new Z(R((function(e){e&&e.forEach((function(e){t.setState({thumbnailsWrapperWidth:e.contentRect.width},t.handleResize)}))}),50)),this.resizeSlideWrapperObserver.observe(e.current))}},{key:\"initThumbnailWrapperResizeObserver\",value:function(e){var t=this;e&&!e.current||(this.resizeThumbnailWrapperObserver=new Z(R((function(e){e&&e.forEach((function(e){t.setState({thumbnailsWrapperHeight:e.contentRect.height},t.handleResize)}))}),50)),this.resizeThumbnailWrapperObserver.observe(e.current))}},{key:\"toggleFullScreen\",value:function(){this.state.isFullscreen?this.exitFullScreen():this.fullScreen()}},{key:\"togglePlay\",value:function(){this.playPauseIntervalId?this.pause():this.play()}},{key:\"handleScreenChange\",value:function(){var e=this.props,t=e.onScreenChange,n=e.useBrowserFullscreen,i=document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement,r=this.imageGallery.current===i;t&&t(r),n&&this.setState({isFullscreen:r})}},{key:\"slideToIndex\",value:function(e,t){var n=this.state,i=n.currentIndex,r=n.isTransitioning,a=this.props,s=a.items,o=a.slideDuration,l=a.onBeforeSlide;if(!r){t&&this.playPauseIntervalId&&(this.pause(!1),this.play(!1));var u=s.length-1,c=e;e<0?c=u:e>u&&(c=0),l&&c!==i&&l(c),this.setState({previousIndex:i,currentIndex:c,isTransitioning:c!==i,currentSlideOffset:0,slideStyle:{transition:\"all \".concat(o,\"ms ease-out\")}},this.onSliding)}}},{key:\"slideLeft\",value:function(e){var t=this.props.isRTL;this.slideTo(e,t?\"right\":\"left\")}},{key:\"slideRight\",value:function(e){var t=this.props.isRTL;this.slideTo(e,t?\"left\":\"right\")}},{key:\"slideTo\",value:function(e,t){var n=this,i=this.state,r=i.currentIndex,a=i.currentSlideOffset,s=i.isTransitioning,o=this.props.items,l=r+(\"left\"===t?-1:1);s||(2===o.length?this.setState({currentSlideOffset:a+(\"left\"===t?.001:-.001),slideStyle:{transition:\"none\"}},(function(){window.setTimeout((function(){return n.slideToIndex(l,e)}),25)})):this.slideToIndex(l,e))}},{key:\"handleThumbnailMouseOver\",value:function(e,t){this.props.slideOnThumbnailOver&&this.onThumbnailMouseOver(e,t)}},{key:\"handleThumbnailKeyUp\",value:function(e,t){Re(e)&&this.onThumbnailClick(e,t)}},{key:\"handleSlideKeyUp\",value:function(e){Re(e)&&(0,this.props.onClick)(e)}},{key:\"isThumbnailVertical\",value:function(){var e=this.props.thumbnailPosition;return\"left\"===e||\"right\"===e}},{key:\"addScreenChangeEvent\",value:function(){var e=this;xe.forEach((function(t){document.addEventListener(t,e.handleScreenChange)}))}},{key:\"removeScreenChangeEvent\",value:function(){var e=this;xe.forEach((function(t){document.removeEventListener(t,e.handleScreenChange)}))}},{key:\"fullScreen\",value:function(){var e=this.props.useBrowserFullscreen,t=this.imageGallery.current;e?t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():this.setModalFullscreen(!0):this.setModalFullscreen(!0),this.setState({isFullscreen:!0})}},{key:\"exitFullScreen\",value:function(){var e=this.state.isFullscreen,t=this.props.useBrowserFullscreen;e&&(t?document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen?document.msExitFullscreen():this.setModalFullscreen(!1):this.setModalFullscreen(!1),this.setState({isFullscreen:!1}))}},{key:\"pauseOrPlay\",value:function(){var e=this.props.infinite,t=this.state.currentIndex;e||this.canSlideRight()?this.slideToIndex(t+1):this.pause()}},{key:\"play\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.props,n=t.onPlay,i=t.slideInterval,r=t.slideDuration,a=this.state.currentIndex;this.playPauseIntervalId||(this.setState({isPlaying:!0}),this.playPauseIntervalId=window.setInterval(this.pauseOrPlay,Math.max(i,r)),n&&e&&n(a))}},{key:\"pause\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.props.onPause,n=this.state.currentIndex;this.playPauseIntervalId&&(window.clearInterval(this.playPauseIntervalId),this.playPauseIntervalId=null,this.setState({isPlaying:!1}),t&&e&&t(n))}},{key:\"isImageLoaded\",value:function(e){return!!this.loadedImages[e.original]||(this.loadedImages[e.original]=!0,!1)}},{key:\"handleImageLoaded\",value:function(e,t){var n=this.props.onImageLoad;!this.loadedImages[t]&&n&&(this.loadedImages[t]=!0,n(e))}},{key:\"renderItem\",value:function(e){var t=this.state.isFullscreen,n=this.props.onImageError||this.handleImageError;return a().createElement(ie,{description:e.description,fullscreen:e.fullscreen,handleImageLoaded:this.handleImageLoaded,isFullscreen:t,onImageError:n,original:e.original,originalAlt:e.originalAlt,originalHeight:e.originalHeight,originalWidth:e.originalWidth,originalTitle:e.originalTitle,sizes:e.sizes,loading:e.loading,srcSet:e.srcSet})}},{key:\"renderThumbInner\",value:function(e){var t=this.props.onThumbnailError||this.handleImageError;return a().createElement(\"span\",{className:\"image-gallery-thumbnail-inner\"},a().createElement(\"img\",{className:\"image-gallery-thumbnail-image\",src:e.thumbnail,height:e.thumbnailHeight,width:e.thumbnailWidth,alt:e.thumbnailAlt,title:e.thumbnailTitle,loading:e.thumbnailLoading,onError:t}),e.thumbnailLabel&&a().createElement(\"div\",{className:\"image-gallery-thumbnail-label\"},e.thumbnailLabel))}},{key:\"render\",value:function(){var e=this.state,n=e.currentIndex,i=e.isFullscreen,r=e.modalFullscreen,s=e.isPlaying,o=this.props,l=o.additionalClass,u=o.disableThumbnailSwipe,c=o.indexSeparator,h=o.isRTL,d=o.items,f=o.thumbnailPosition,p=o.renderFullscreenButton,m=o.renderCustomControls,g=o.renderLeftNav,v=o.renderRightNav,b=o.showBullets,y=o.showFullscreenButton,w=o.showIndex,T=o.showThumbnails,S=o.showNav,O=o.showPlayButton,E=o.renderPlayPauseButton,k=this.getThumbnailStyle(),I=this.getSlideItems(),x=I.slides,_=I.thumbnails,R=I.bullets,L=t(\"image-gallery-slide-wrapper\",this.getThumbnailPositionClassName(f),{\"image-gallery-rtl\":h}),P=a().createElement(\"div\",{ref:this.imageGallerySlideWrapper,className:L},m&&m(),this.canSlide()?a().createElement(a().Fragment,null,S&&a().createElement(a().Fragment,null,g(this.slideLeft,!this.canSlideLeft()),v(this.slideRight,!this.canSlideRight())),a().createElement(ve,{className:\"image-gallery-swipe\",delta:0,onSwiping:this.handleSwiping,onSwiped:this.handleOnSwiped},a().createElement(\"div\",{className:\"image-gallery-slides\"},x))):a().createElement(\"div\",{className:\"image-gallery-slides\"},x),O&&E(this.togglePlay,s),b&&a().createElement(\"div\",{className:\"image-gallery-bullets\"},a().createElement(\"div\",{className:\"image-gallery-bullets-container\",role:\"navigation\",\"aria-label\":\"Bullet Navigation\"},R)),y&&p(this.toggleFullScreen,i),w&&a().createElement(\"div\",{className:\"image-gallery-index\"},a().createElement(\"span\",{className:\"image-gallery-index-current\"},n+1),a().createElement(\"span\",{className:\"image-gallery-index-separator\"},c),a().createElement(\"span\",{className:\"image-gallery-index-total\"},d.length))),M=t(\"image-gallery\",l,{\"fullscreen-modal\":r}),W=t(\"image-gallery-content\",this.getThumbnailPositionClassName(f),{fullscreen:i}),D=t(\"image-gallery-thumbnails-wrapper\",this.getThumbnailPositionClassName(f),{\"thumbnails-wrapper-rtl\":!this.isThumbnailVertical()&&h},{\"thumbnails-swipe-horizontal\":!this.isThumbnailVertical()&&!u},{\"thumbnails-swipe-vertical\":this.isThumbnailVertical()&&!u});return a().createElement(\"div\",{ref:this.imageGallery,className:M,\"aria-live\":\"polite\"},a().createElement(\"div\",{className:W},(\"bottom\"===f||\"right\"===f)&&P,T&&_.length>0?a().createElement(ve,{className:D,delta:0,onSwiping:!u&&this.handleThumbnailSwiping,onSwiped:!u&&this.handleOnThumbnailSwiped},a().createElement(\"div\",{className:\"image-gallery-thumbnails\",ref:this.thumbnailsWrapper,style:this.getThumbnailBarHeight()},a().createElement(\"nav\",{ref:this.thumbnails,className:\"image-gallery-thumbnails-container\",style:k,\"aria-label\":\"Thumbnail Navigation\"},_))):null,(\"top\"===f||\"left\"===f)&&P))}}],i&&Se(n.prototype,i),l}(a().Component);Le.propTypes={flickThreshold:te.number,items:(0,te.arrayOf)((0,te.shape)({bulletClass:te.string,bulletOnClick:te.func,description:te.string,original:te.string,originalHeight:te.number,originalWidth:te.number,loading:te.string,thumbnailHeight:te.number,thumbnailWidth:te.number,thumbnailLoading:te.string,fullscreen:te.string,originalAlt:te.string,originalTitle:te.string,thumbnail:te.string,thumbnailAlt:te.string,thumbnailLabel:te.string,thumbnailTitle:te.string,originalClass:te.string,thumbnailClass:te.string,renderItem:te.func,renderThumbInner:te.func,imageSet:_e,srcSet:te.string,sizes:te.string})).isRequired,showNav:te.bool,autoPlay:te.bool,lazyLoad:te.bool,infinite:te.bool,showIndex:te.bool,showBullets:te.bool,showThumbnails:te.bool,showPlayButton:te.bool,showFullscreenButton:te.bool,disableThumbnailScroll:te.bool,disableKeyDown:te.bool,disableSwipe:te.bool,disableThumbnailSwipe:te.bool,useBrowserFullscreen:te.bool,onErrorImageURL:te.string,indexSeparator:te.string,thumbnailPosition:(0,te.oneOf)([\"top\",\"bottom\",\"left\",\"right\"]),startIndex:te.number,slideDuration:te.number,slideInterval:te.number,slideOnThumbnailOver:te.bool,swipeThreshold:te.number,swipingTransitionDuration:te.number,swipingThumbnailTransitionDuration:te.number,onSlide:te.func,onBeforeSlide:te.func,onScreenChange:te.func,onPause:te.func,onPlay:te.func,onClick:te.func,onImageLoad:te.func,onImageError:te.func,onTouchMove:te.func,onTouchEnd:te.func,onTouchStart:te.func,onMouseOver:te.func,onMouseLeave:te.func,onThumbnailError:te.func,onThumbnailClick:te.func,renderCustomControls:te.func,renderLeftNav:te.func,renderRightNav:te.func,renderPlayPauseButton:te.func,renderFullscreenButton:te.func,renderItem:te.func,renderThumbInner:te.func,stopPropagation:te.bool,additionalClass:te.string,useTranslate3D:te.bool,isRTL:te.bool,useWindowKeyDown:te.bool},Le.defaultProps={onErrorImageURL:\"\",additionalClass:\"\",showNav:!0,autoPlay:!1,lazyLoad:!1,infinite:!0,showIndex:!1,showBullets:!1,showThumbnails:!0,showPlayButton:!0,showFullscreenButton:!0,disableThumbnailScroll:!1,disableKeyDown:!1,disableSwipe:!1,disableThumbnailSwipe:!1,useTranslate3D:!0,isRTL:!1,useBrowserFullscreen:!0,flickThreshold:.4,stopPropagation:!1,indexSeparator:\" / \",thumbnailPosition:\"bottom\",startIndex:0,slideDuration:450,swipingTransitionDuration:0,swipingThumbnailTransitionDuration:0,onSlide:null,onBeforeSlide:null,onScreenChange:null,onPause:null,onPlay:null,onClick:null,onImageLoad:null,onImageError:null,onTouchMove:null,onTouchEnd:null,onTouchStart:null,onMouseOver:null,onMouseLeave:null,onThumbnailError:null,onThumbnailClick:null,renderCustomControls:null,renderThumbInner:null,renderItem:null,slideInterval:3e3,slideOnThumbnailOver:!1,swipeThreshold:30,renderLeftNav:function(e,t){return a().createElement(ce,{onClick:e,disabled:t})},renderRightNav:function(e,t){return a().createElement(de,{onClick:e,disabled:t})},renderPlayPauseButton:function(e,t){return a().createElement(pe,{onClick:e,isPlaying:t})},renderFullscreenButton:function(e,t){return a().createElement(le,{onClick:e,isFullscreen:t})},useWindowKeyDown:!0};const Pe=Le})(),r})()}));","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Active, _React$Component);\n\n function Active() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Active);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () {\n return _this.setState({ active: true });\n }, _this.handleMouseUp = function () {\n return _this.setState({ active: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Active;\n }(_react2.default.Component);\n};\n\nexports.default = active;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hover = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar hover = exports.hover = function hover(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Hover, _React$Component);\n\n function Hover() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hover);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () {\n return _this.setState({ hover: true });\n }, _this.handleMouseOut = function () {\n return _this.setState({ hover: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Hover;\n }(_react2.default.Component);\n};\n\nexports.default = hover;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flattenNames = undefined;\n\nvar _isString2 = require('lodash/isString');\n\nvar _isString3 = _interopRequireDefault(_isString2);\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _isPlainObject2 = require('lodash/isPlainObject');\n\nvar _isPlainObject3 = _interopRequireDefault(_isPlainObject2);\n\nvar _map2 = require('lodash/map');\n\nvar _map3 = _interopRequireDefault(_map2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flattenNames = exports.flattenNames = function flattenNames() {\n var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var names = [];\n\n (0, _map3.default)(things, function (thing) {\n if (Array.isArray(thing)) {\n flattenNames(thing).map(function (name) {\n return names.push(name);\n });\n } else if ((0, _isPlainObject3.default)(thing)) {\n (0, _forOwn3.default)(thing, function (value, key) {\n value === true && names.push(key);\n names.push(key + '-' + value);\n });\n } else if ((0, _isString3.default)(thing)) {\n names.push(thing);\n }\n });\n\n return names;\n};\n\nexports.default = flattenNames;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined;\n\nvar _flattenNames = require('./flattenNames');\n\nvar _flattenNames2 = _interopRequireDefault(_flattenNames);\n\nvar _mergeClasses = require('./mergeClasses');\n\nvar _mergeClasses2 = _interopRequireDefault(_mergeClasses);\n\nvar _autoprefix = require('./autoprefix');\n\nvar _autoprefix2 = _interopRequireDefault(_autoprefix);\n\nvar _hover2 = require('./components/hover');\n\nvar _hover3 = _interopRequireDefault(_hover2);\n\nvar _active = require('./components/active');\n\nvar _active2 = _interopRequireDefault(_active);\n\nvar _loop2 = require('./loop');\n\nvar _loop3 = _interopRequireDefault(_loop2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.hover = _hover3.default;\nexports.handleHover = _hover3.default;\nexports.handleActive = _active2.default;\nexports.loop = _loop3.default;\nvar ReactCSS = exports.ReactCSS = function ReactCSS(classes) {\n for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n activations[_key - 1] = arguments[_key];\n }\n\n var activeNames = (0, _flattenNames2.default)(activations);\n var merged = (0, _mergeClasses2.default)(classes, activeNames);\n return (0, _autoprefix2.default)(merged);\n};\n\nexports.default = ReactCSS;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar loopable = function loopable(i, length) {\n var props = {};\n var setProp = function setProp(name) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n props[name] = value;\n };\n\n i === 0 && setProp('first-child');\n i === length - 1 && setProp('last-child');\n (i === 0 || i % 2 === 0) && setProp('even');\n Math.abs(i % 2) === 1 && setProp('odd');\n setProp('nth-child', i);\n\n return props;\n};\n\nexports.default = loopable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeClasses = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _cloneDeep2 = require('lodash/cloneDeep');\n\nvar _cloneDeep3 = _interopRequireDefault(_cloneDeep2);\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mergeClasses = exports.mergeClasses = function mergeClasses(classes) {\n var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {};\n activeNames.map(function (name) {\n var toMerge = classes[name];\n if (toMerge) {\n (0, _forOwn3.default)(toMerge, function (value, key) {\n if (!styles[key]) {\n styles[key] = {};\n }\n\n styles[key] = _extends({}, styles[key], toMerge[key]);\n });\n }\n\n return name;\n });\n return styles;\n};\n\nexports.default = mergeClasses;","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import * as React from \"react\";\r\nimport { createContext, Dispatch, FC, SetStateAction, useCallback, useContext, useEffect, useState } from \"react\";\r\nimport { Feature } from \"ol\";\r\nimport { IInfo } from \"../Popups/Info/Info\";\r\nimport { IToast } from \"../Elements/Toast\";\r\nimport { IBookmark } from \"../Map/Bookmarks/BookmarksWidget\";\r\nimport { getUrlParam } from \"../Map/utils\";\r\nimport { getCurrentActiveToken } from \"../Map/MapDownload/Token\";\r\n\r\nexport interface INomaContext {\r\n hasMap: boolean;\r\n setHasMap: Dispatch>;\r\n language: string;\r\n setLanguage: Dispatch>;\r\n isMobile: boolean;\r\n isIFrame: boolean;\r\n locateFeature: IFeatureTimeStamp;\r\n setLocateFeature: (feature: Feature) => void;\r\n highlightFeatures: IFeatureArrayTimeStamp;\r\n setHighlightFeatures: Dispatch>;\r\n enabledLayers: string[];\r\n setEnabledLayers: Dispatch>;\r\n info: IInfo;\r\n setInfo: Dispatch>;\r\n mapClick: any;\r\n setMapClick: Dispatch>;\r\n showToast: IToast;\r\n setShowToast: Dispatch>;\r\n bookmarks: IBookmark[];\r\n setBookmarks: Dispatch>;\r\n selectedBookmarkId: number;\r\n setSelectedBookmarkId: Dispatch>;\r\n activeToken: string;\r\n setActiveToken: Dispatch>;\r\n}\r\n\r\nexport interface IApplyFeature {\r\n feature: Feature;\r\n isRight?: boolean;\r\n}\r\nexport interface IFeatureTimeStamp {\r\n feature: Feature;\r\n timestamp: number;\r\n}\r\nexport interface IFeatureArrayTimeStamp {\r\n features: Feature[];\r\n timestamp: number;\r\n}\r\n\r\nconst storageName = \"GeoLiteBookmarks\";\r\n\r\nconst urlLanguage = getUrlParam(\"lang\");\r\nconst defaultLanguage = /* localStorage.getItem(\"GeoLiteLanguage\") ||*/ urlLanguage || /* configA?.language || */ \"LV\";\r\n\r\nconst NomaContext = createContext(null);\r\n\r\nexport const useAppContext = (): INomaContext => useContext(NomaContext);\r\n\r\nexport const AppContextProvider: FC = (props: React.PropsWithChildren) => {\r\n const [hasMap, setHasMap] = useState(true);\r\n const [language, setLanguage] = useState(defaultLanguage.toUpperCase());\r\n const [locateFeature, setLocateFeature] = useState(null);\r\n const [highlightFeatures, setHighlightFeatures] = useState(null);\r\n const [enabledLayers, setEnabledLayers] = useState([]);\r\n const [info, setInfo] = useState(null);\r\n const [mapClick, setMapClick] = useState();\r\n const [showToast, setShowToast] = useState();\r\n const [bookmarks, setBookmarks] = useState(getStoredBookmarks());\r\n const [selectedBookmarkId, setSelectedBookmarkId] = useState();\r\n const [activeToken, setActiveToken] = useState(getCurrentActiveToken());\r\n\r\n const isMobile =\r\n navigator.maxTouchPoints > 0 || navigator.platform === \"iPhone\" || navigator.platform === \"iPad\" || iniFrame();\r\n\r\n const isIFrame = iniFrame();\r\n\r\n useEffect(() => {\r\n bookmarks.length && localStorage.setItem(storageName, JSON.stringify(bookmarks));\r\n }, [bookmarks]);\r\n\r\n const prepareLocateFeature = useCallback((feature) => {\r\n setLocateFeature({ feature, timestamp: Date.now() });\r\n }, []);\r\n\r\n const prepareHighlightFeatures = useCallback((features) => {\r\n setHighlightFeatures({ features, timestamp: Date.now() });\r\n }, []);\r\n\r\n const prepareLanguage = useCallback(\r\n (lang: string) => {\r\n if (lang !== language) {\r\n setLanguage(lang);\r\n // TODO save on localstorage\r\n // localStorage.setItem(\"GeoLiteLanguage\", lang);\r\n }\r\n },\r\n [language]\r\n );\r\n\r\n const values = {\r\n hasMap,\r\n setHasMap,\r\n language,\r\n setLanguage: prepareLanguage,\r\n isMobile,\r\n isIFrame,\r\n locateFeature,\r\n setLocateFeature: prepareLocateFeature,\r\n highlightFeatures,\r\n setHighlightFeatures: prepareHighlightFeatures,\r\n enabledLayers,\r\n setEnabledLayers,\r\n info,\r\n setInfo,\r\n mapClick,\r\n setMapClick,\r\n showToast,\r\n setShowToast,\r\n bookmarks,\r\n setBookmarks,\r\n selectedBookmarkId,\r\n setSelectedBookmarkId,\r\n activeToken,\r\n setActiveToken\r\n };\r\n\r\n return {props.children};\r\n};\r\n\r\nconst iniFrame = () => {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n};\r\n\r\nconst getTimeFormated = (value: number) => {\r\n const date = new Date(value);\r\n return date.getUTCHours().toString().padStart(2, \"0\") + \":\" + date.getUTCMinutes().toString().padStart(2, \"0\");\r\n};\r\n\r\nconst getStoredBookmarks = () => {\r\n const storedBookmarks = localStorage.getItem(storageName);\r\n let parsedBookmarks: [];\r\n try {\r\n parsedBookmarks = storedBookmarks ? JSON.parse(storedBookmarks) : [];\r\n } catch (e) {\r\n parsedBookmarks = [];\r\n }\r\n return parsedBookmarks;\r\n};\r\n","import * as React from \"react\";\r\nimport { createContext, Dispatch, FC, SetStateAction, useCallback, useContext, useEffect, useState } from \"react\";\r\nimport { ICustomBaseMap } from \"../Map/Basemaps/BasemapWidget\";\r\nimport { BaseMapsMode } from \"../Map/enums\";\r\nimport { useMapContext } from \"./MapContext\";\r\n\r\nexport interface IBaseMapContext {\r\n primaryMapId: string;\r\n setPrimaryMapId: Dispatch>;\r\n secondaryMapId: string;\r\n setSecondaryMapId: Dispatch>;\r\n widgetMode: BaseMapsMode;\r\n setWidgetMode: Dispatch>;\r\n subBasemapConfig: any;\r\n setSubBasemapConfig: Dispatch>;\r\n clickedBasemap: ICustomBaseMap;\r\n setClickedBasemap: Dispatch>;\r\n onOverlayMapClosed: () => void;\r\n onOverlayMapSelected: (mapId: string) => void;\r\n isOverlayModeActive: boolean;\r\n setIsOverlayModeActive: Dispatch>;\r\n changeMap: (id: string) => void;\r\n secondMap: any;\r\n setSecondMap: Dispatch>;\r\n layerOpacity: number;\r\n setLayerOpacity: Dispatch>;\r\n height: number;\r\n setHeight: Dispatch>;\r\n}\r\n\r\nconst appid = encodeURI(window.location.host + window.location.pathname);\r\nconst storageName = \"GeoLiteBaseMap-\" + appid;\r\n\r\nconst BaseMapContext = createContext(null);\r\n\r\nexport const useBaseMapContext = (): IBaseMapContext => useContext(BaseMapContext);\r\n\r\nexport const BaseMapContextProvider: FC = (props: React.PropsWithChildren) => {\r\n const { configA } = useMapContext();\r\n const [primaryMapId, setPrimaryMapId] = useState(\r\n localStorage.getItem(storageName) || configA.basemaps[0].id\r\n );\r\n const [secondaryMapId, setSecondaryMapId] = useState(null);\r\n const [widgetMode, setWidgetMode] = useState(BaseMapsMode.default);\r\n const [subBasemapConfig, setSubBasemapConfig] = useState();\r\n const [clickedBasemap, setClickedBasemap] = useState(\r\n configA.basemaps.find((basemap: ICustomBaseMap) => basemap.id === primaryMapId)\r\n );\r\n const [isOverlayModeActive, setIsOverlayModeActive] = useState(false);\r\n const [secondMap, setSecondMap] = useState(null);\r\n const [layerOpacity, setLayerOpacity] = useState(0.5);\r\n const [height, setHeight] = useState(document.body.clientHeight / 2);\r\n\r\n useEffect(() => {\r\n primaryMapId && localStorage.setItem(storageName, primaryMapId);\r\n }, [primaryMapId]);\r\n\r\n useEffect(() => {\r\n secondMap && secondMap.setOpacity(layerOpacity);\r\n }, [secondMap, layerOpacity]);\r\n\r\n useEffect(() => {\r\n widgetMode !== BaseMapsMode.default && setIsOverlayModeActive(true);\r\n }, [widgetMode]);\r\n\r\n const prepareToSetSubBasemapConfig = (basemapConfig) =>\r\n setSubBasemapConfig(basemapConfig !== subBasemapConfig ? basemapConfig : null);\r\n\r\n const prepareToSetClickedBasemap = (basemap) => {\r\n setSubBasemapConfig(null);\r\n setClickedBasemap(basemap);\r\n };\r\n\r\n const onOverlayMapClosed = () => {\r\n setWidgetMode(BaseMapsMode.default);\r\n setIsOverlayModeActive(false);\r\n setSecondaryMapId(null);\r\n };\r\n\r\n const onOverlayMapSelected = (mapId: string) => {\r\n setSecondaryMapId(mapId);\r\n changeMap(primaryMapId);\r\n setSubBasemapConfig(null);\r\n };\r\n\r\n const changeMap = useCallback(\r\n (id: string) => {\r\n configA.basemaps.filter((basemap) => basemap.id === id)[0];\r\n setPrimaryMapId(id);\r\n },\r\n [widgetMode]\r\n );\r\n\r\n const values = {\r\n primaryMapId,\r\n setPrimaryMapId,\r\n secondaryMapId,\r\n setSecondaryMapId,\r\n widgetMode,\r\n setWidgetMode,\r\n subBasemapConfig,\r\n setSubBasemapConfig: prepareToSetSubBasemapConfig,\r\n clickedBasemap,\r\n setClickedBasemap: prepareToSetClickedBasemap,\r\n onOverlayMapClosed,\r\n onOverlayMapSelected,\r\n isOverlayModeActive,\r\n setIsOverlayModeActive,\r\n changeMap,\r\n secondMap,\r\n setSecondMap,\r\n layerOpacity,\r\n setLayerOpacity,\r\n height,\r\n setHeight\r\n };\r\n\r\n return {props.children};\r\n};\r\n","import * as React from \"react\";\r\nimport { createContext, Dispatch, FC, SetStateAction, useCallback, useContext, useEffect, useState } from \"react\";\r\nimport { getMap } from \"../Map/GeoLiteMap\";\r\nimport { useMapContext } from \"./MapContext\";\r\nimport {\r\n convertToString,\r\n coordinateFormat,\r\n coordToObject,\r\n IInputCoordinates\r\n} from \"../Map/Coordinates/CoordinateUtils\";\r\nimport { ICoords } from \"../Map/Coordinates/CoordinateWidget\";\r\nimport { getUrlParam } from \"../Map/utils\";\r\n\r\nexport interface IConvertContext {\r\n coordinates: number[];\r\n setCoordinates: Dispatch>;\r\n coordinatesString: string;\r\n setCoordinatesString: Dispatch>;\r\n formatType: coordinateFormat;\r\n setFormatType: Dispatch>;\r\n getCurrentFormatCoords: (coords: number[]) => string;\r\n allCoordinates: ICoords[];\r\n setAllCoordinates: Dispatch>;\r\n inputCoordinates: IInputCoordinates;\r\n setInputCoordinates: Dispatch>;\r\n pinPlaced: boolean;\r\n setPinPlaced: Dispatch>;\r\n coordinatesInvalid: boolean;\r\n setCoordinatesInvalid: Dispatch>;\r\n}\r\n\r\nconst xArrow = \"\\u2192 \";\r\nconst yArrow = \"\\u2191 \";\r\n\r\nconst getPosParam = () => {\r\n const pos = getUrlParam(\"pos\");\r\n return pos && pos.split(\",\").map(Number);\r\n};\r\n\r\nconst ConvertContext = createContext(null);\r\n\r\nexport const useConvertContext = (): IConvertContext => useContext(ConvertContext);\r\n\r\nexport const ConvertContextProvider: FC = (props: React.PropsWithChildren) => {\r\n const { configA, placingPin } = useMapContext();\r\n\r\n const getAllCoordinates = (): ICoords[] =>\r\n configA.coordinateFormats.map((format: string) => {\r\n const coordinates = convertToString(format, getMap().getView().getCenter());\r\n const coordFormat =\r\n format === \"LKS\"\r\n ? format + \"92 x(E) \" + xArrow + \", y(N) \" + yArrow\r\n : format === \"LKSGEO\"\r\n ? format.replace(\"GEO\", \"\") + \"92 TM x(N) \" + yArrow + \", y(E) \" + xArrow\r\n : format;\r\n return { value: format, labelRows: [coordFormat, coordinates] };\r\n });\r\n\r\n const [coordinates, setCoordinates] = useState(getPosParam());\r\n const [coordinatesString, setCoordinatesString] = useState(\"\");\r\n const [formatType, setFormatType] = useState(\"LKS\");\r\n const [allCoordinates, setAllCoordinates] = useState(getAllCoordinates);\r\n const [inputCoordinates, setInputCoordinates] = useState({ format: \"LKS\", x: [\"\"], y: [\"\"] });\r\n const [pinPlaced, setPinPlaced] = useState(placingPin);\r\n const [coordinatesInvalid, setCoordinatesInvalid] = useState(false);\r\n\r\n useEffect(() => {\r\n setCoordinatesString(getCurrentFormatCoords(coordinates));\r\n\r\n if (!coordinates) {\r\n setInputCoordinates({ format: formatType, x: [\"\"], y: [\"\"] });\r\n return;\r\n }\r\n\r\n const all = configA.coordinateFormats.map((format: string) => {\r\n const coords = convertToString(format, coordinates);\r\n const coordFormat =\r\n format === \"LKS\"\r\n ? format + \"92 x(E) \" + xArrow + \", y(N) \" + yArrow\r\n : format === \"LKSGEO\"\r\n ? format.replace(\"GEO\", \"\") + \"92 TM x(N) \" + yArrow + \", y(E) \" + xArrow\r\n : format;\r\n\r\n if (format === formatType) {\r\n const inputCoords = coordToObject(coords, formatType);\r\n\r\n const inputCoord = inputCoords.x\r\n ? formatType === \"MGRS\"\r\n ? inputCoords\r\n : inputCoords.y\r\n ? inputCoords\r\n : null\r\n : null;\r\n inputCoord && setInputCoordinates(inputCoord);\r\n }\r\n return { value: format, labelRows: [coordFormat, coords] };\r\n });\r\n setAllCoordinates(all);\r\n }, [formatType, coordinates]);\r\n\r\n useEffect(() => {\r\n pinPlaced && setCoordinatesInvalid(false);\r\n }, [pinPlaced]);\r\n\r\n // const getCoordinatesString = (feature: Feature) =>\r\n // getCurrentFormatCoords(feature.getGeometry().getCoordinates());\r\n\r\n const getCurrentFormatCoords = useCallback(\r\n (coords: number[]) => {\r\n let coordinates = convertToString(formatType, coords);\r\n if (formatType === \"LKS\" || formatType === \"LKSGEO\") {\r\n const numbers = coordinates.split(\",\");\r\n coordinates = numbers[0] + \" m, \" + numbers[1] + \" m\";\r\n }\r\n return coordinates;\r\n },\r\n [formatType]\r\n );\r\n\r\n const values = {\r\n coordinates,\r\n setCoordinates,\r\n coordinatesString,\r\n setCoordinatesString,\r\n formatType,\r\n setFormatType,\r\n getCurrentFormatCoords,\r\n allCoordinates,\r\n setAllCoordinates,\r\n inputCoordinates,\r\n setInputCoordinates,\r\n pinPlaced,\r\n setPinPlaced,\r\n coordinatesInvalid,\r\n setCoordinatesInvalid\r\n };\r\n\r\n return {props.children};\r\n};\r\n","import * as React from \"react\";\r\nimport {\r\n createContext,\r\n Dispatch,\r\n FC,\r\n SetStateAction,\r\n useCallback,\r\n useContext,\r\n useState,\r\n useEffect,\r\n useRef\r\n} from \"react\";\r\nimport { Feature, Collection } from \"ol\";\r\nimport { DrawType } from \"../Map/enums\";\r\nimport { Draw, Modify, Select, DoubleClickZoom } from \"ol/interaction\";\r\nimport { getDrawingSymbol } from \"../Map/Symbols/symbols\";\r\nimport { config } from \"../Map/config\";\r\nimport { primaryAction, singleClick } from \"ol/events/condition\";\r\nimport { Vector as VectorSource } from \"ol/source\";\r\nimport { useAppContext } from \"./AppContext\";\r\nimport { Type } from \"ol/geom/Geometry\";\r\nimport { getMap } from \"../Map/GeoLiteMap\";\r\nimport { useMapContext } from \"./MapContext\";\r\nimport { Point } from \"ol/geom\";\r\nimport { getDrawingLayer } from \"../Map/mapFunctions\";\r\n\r\nenum OlDrawTypes {\r\n LineString = \"LineString\",\r\n Point = \"Point\",\r\n Polygon = \"Polygon\"\r\n}\r\n\r\nexport interface IDrawingContext {\r\n onDrawStart: (type: DrawType) => void;\r\n newFeature: Feature;\r\n setNewFeature: Dispatch>;\r\n onNoteChange: () => void;\r\n onDeleteFeature: (deletable: Feature) => void;\r\n selectedFeature: Feature;\r\n setSelectedFeature: Dispatch>;\r\n // addFromSearch: (feature: Feature) => void;\r\n color: string;\r\n setColor: Dispatch>;\r\n colorsVisible: boolean | \"true\";\r\n setColorsVisible: Dispatch>;\r\n}\r\n\r\nconst DrawingContext = createContext(null);\r\n\r\nexport const useDrawingContext = (): IDrawingContext => useContext(DrawingContext);\r\n\r\nexport const DrawingContextProvider: FC = (props: React.PropsWithChildren) => {\r\n const { isMobile /* setIdentifiedFeatures */ } = useAppContext();\r\n const { drawType, setDrawType, drawnFeatures, setDrawnFeatures, setDrawingMenuVisible, getCurrentFormatCoords } =\r\n useMapContext();\r\n\r\n const [newFeature, setNewFeature] = useState();\r\n const [selectedFeature, setSelectedFeature] = useState();\r\n const [color, setColor] = useState(config.default.colors[0] || \"red\");\r\n const [colorsVisible, setColorsVisible] = useState(false);\r\n\r\n const drawRef = useRef();\r\n const selectRef = useRef props.onChange(e.target.checked)}\r\n />\r\n ) : (\r\n props.onChange(e.target.checked)}\r\n />\r\n )}\r\n \r\n \r\n {props.subTitle ?
{props.subTitle}
: null}\r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { FC } from \"react\";\r\nimport \"./CloseButton.scss\";\r\n\r\nexport interface ICloseButton {\r\n onClose: () => void;\r\n className?: string;\r\n}\r\nexport const CloseButton: FC = (props) => (\r\n props.onClose()}>\r\n \r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { FC } from \"react\";\r\nimport \"./PopupButton.scss\";\r\n\r\nexport interface IPopupButton {\r\n title?: string;\r\n icon?: string;\r\n classname?: string;\r\n disabled?: boolean;\r\n loading?: boolean;\r\n onClick: () => void;\r\n}\r\nexport const PopupButton: FC = (props) => {\r\n const classname = [\r\n \"popup-button\",\r\n \"unselectable\",\r\n props.classname ? props.classname : \"default\",\r\n props.disabled ? \"disabled\" : \"\"\r\n ].join(\" \");\r\n\r\n const onClick = () => {\r\n !props.disabled && props.onClick();\r\n };\r\n\r\n return (\r\n \r\n {props.icon ? : null}\r\n {props.title ? {props.title} : null}\r\n {props.loading ? : null}\r\n \r\n );\r\n};\r\n","import React, { ChangeEventHandler, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { IInputFieldConfig } from \"../Map/config\";\r\nimport { IGroup } from \"../Contexts/SearchContext\";\r\nimport \"./Select.scss\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\n\r\nconst maxOptionLength = 30;\r\n\r\nexport const Select = ({\r\n title,\r\n config,\r\n options,\r\n defaultValue,\r\n onChange\r\n}: {\r\n title: string;\r\n config: IInputFieldConfig;\r\n options: IGroup[];\r\n defaultValue: string;\r\n onChange: ChangeEventHandler;\r\n}): JSX.Element => {\r\n const { isMobile } = useAppContext();\r\n let longestOption = 0;\r\n !isMobile && options && options.map((o) => o.label.length > longestOption && (longestOption = o.label.length));\r\n\r\n return longestOption <= maxOptionLength ? (\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nconst HtmlSelect = ({\r\n title,\r\n config,\r\n options,\r\n defaultValue,\r\n onChange\r\n}: {\r\n title: string;\r\n config: IInputFieldConfig;\r\n options: IGroup[];\r\n defaultValue: string;\r\n onChange: ChangeEventHandler;\r\n}) => (\r\n <>\r\n {config.title ? (\r\n \r\n ) : null}\r\n
\r\n \r\n
\r\n \r\n);\r\n\r\nconst DivSelect = ({\r\n title,\r\n config,\r\n options,\r\n defaultValue,\r\n onChange\r\n}: {\r\n title: string;\r\n config: IInputFieldConfig;\r\n options: IGroup[];\r\n defaultValue: string;\r\n onChange: any;\r\n}): JSX.Element => {\r\n const [expanded, setExpanded] = useState(false);\r\n\r\n const optionsRef = useRef(null);\r\n\r\n useEffect(() => {\r\n expanded && optionsRef?.current?.focus();\r\n }, [expanded]);\r\n\r\n const onClick = useCallback(() => setExpanded(!expanded), [expanded]);\r\n\r\n const onBlur = useCallback(\r\n (e) => setTimeout(() => !e.relatedTarget && setExpanded(false), 200), // timeout, because Blur is faster than Click event\r\n [expanded]\r\n );\r\n\r\n const onSelect = (o) => {\r\n onChange({ target: { value: o.label } });\r\n setExpanded(false);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {defaultValue}\r\n
\r\n
\r\n {expanded ? (\r\n
\r\n \r\n {options &&\r\n options.map((o) => (\r\n onSelect(o)}\r\n >\r\n
{o.label}
\r\n
\r\n ))}\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport \"./Toast.scss\";\r\n\r\nexport interface IToast {\r\n position: number[];\r\n title: string;\r\n text?: string;\r\n classname?: string;\r\n}\r\n\r\nexport const Toast = (): JSX.Element => {\r\n const { showToast, setShowToast } = useAppContext();\r\n\r\n useEffect(() => {\r\n showToast && setTimeout(() => setShowToast(undefined), 900);\r\n }, [showToast]);\r\n\r\n const style = showToast\r\n ? {\r\n left: showToast.position[0] + \"px\",\r\n top: showToast.position[1] + \"px\"\r\n }\r\n : {};\r\n\r\n return (\r\n
\r\n {showToast?.title &&
{showToast.title}
}\r\n {showToast?.text &&
{showToast.text}
}\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport \"./ToggleSwitch.scss\";\r\n\r\ninterface IToggleSwitchProps {\r\n id: string;\r\n title?: string;\r\n checked?: boolean;\r\n defaultChecked?: boolean;\r\n disabled?: boolean;\r\n onClick: (checked: boolean) => void;\r\n infoButton?: JSX.Element;\r\n}\r\n\r\n/* use 'checked' only for 'controlled' component, when state is managed by it`s parent */\r\n/* use 'defaultChecked' only for 'uncontrolled' component, when state is not managed by parent */\r\n/* https://github.com/facebook/react/issues/13477#issuecomment-416003818 */\r\n\r\nexport const ToggleSwitch = ({\r\n id,\r\n title,\r\n checked,\r\n defaultChecked,\r\n disabled,\r\n onClick,\r\n infoButton\r\n}: IToggleSwitchProps): JSX.Element => (\r\n
\r\n
\r\n \r\n
\r\n {typeof checked === \"boolean\" ? (\r\n onClick(e.target.checked)}\r\n disabled={disabled}\r\n data-testid={id}\r\n />\r\n ) : (\r\n onClick(e.target.checked)}\r\n disabled={disabled}\r\n data-testid={id}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n
\r\n);\r\n","import React from \"react\";\r\nimport { ICustomBaseMap } from \"./BasemapWidget\";\r\n\r\nexport interface IBaseMapButton {\r\n activeBasemapID: string;\r\n basemaps: any[];\r\n toggleExpanded: CallableFunction;\r\n}\r\nexport const BaseMapButton = ({ activeBasemapID, basemaps, toggleExpanded }: IBaseMapButton): JSX.Element => {\r\n let secondmap = basemaps[1] as ICustomBaseMap;\r\n const index = basemaps.findIndex((map) => map.id === activeBasemapID);\r\n secondmap = (index === basemaps.length - 1 ? basemaps[0] : basemaps[index + 1]) as ICustomBaseMap;\r\n\r\n const basemapConfig = basemaps.find((bConfig) => bConfig.id === activeBasemapID);\r\n\r\n return (\r\n <>\r\n toggleExpanded()} src={basemapConfig.img} alt={basemapConfig.title} title={\"open\"} />\r\n {secondmap.title}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { ICustomBaseMap } from \"./BasemapWidget\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { useBaseMapContext } from \"../../Contexts/BaseMapContext\";\r\nimport { BaseMapsMode } from \"../enums\";\r\nimport \"./BaseMapItem.scss\";\r\n\r\nexport interface IBaseMapItemProps {\r\n id?: string;\r\n basemap: ICustomBaseMap;\r\n selectedMapId?: string | null;\r\n classNameDefault: string;\r\n classNameSelected: string;\r\n toggleExpanded?: CallableFunction;\r\n}\r\n\r\nexport const BaseMapItem = (props: IBaseMapItemProps): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const { primaryMapId, setSubBasemapConfig, setClickedBasemap, widgetMode, onOverlayMapSelected, clickedBasemap } =\r\n useBaseMapContext();\r\n\r\n const [activeBasemap, setActiveBasemap] = useState(props.basemap);\r\n\r\n const basemapRef = useRef();\r\n\r\n useEffect(() => {\r\n if (!clickedBasemap) {\r\n return;\r\n }\r\n\r\n (clickedBasemap.parentId === props.basemap.id || clickedBasemap.id === props.basemap.id) &&\r\n setActiveBasemap(clickedBasemap);\r\n }, [clickedBasemap]);\r\n\r\n const basemapClass = activeBasemap.id === primaryMapId ? props.classNameSelected : props.classNameDefault;\r\n\r\n const buttonClass =\r\n props.basemap.childMaps && props.basemap.childMaps.length > 0 && configA.basemaps\r\n ? \"arrow esri-icon-up\"\r\n : \"hidden-element\";\r\n\r\n const onClick = () =>\r\n widgetMode === BaseMapsMode.default\r\n ? setClickedBasemap(activeBasemap)\r\n : activeBasemap.id !== primaryMapId && onOverlayMapSelected(activeBasemap.id);\r\n\r\n return (\r\n <>\r\n \r\n
setSubBasemapConfig(props.basemap)}>\r\n \r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { Map } from \"ol\";\r\nimport { useBaseMapContext } from \"../../Contexts/BaseMapContext\";\r\nimport { OpacityControl } from \"./OpacityControl\";\r\nimport { BaseMapsMode } from \"../enums\";\r\nimport { ToolbarButton } from \"../Toolbar/ToolbarButton\";\r\nimport { SplitControl } from \"./SplitControl\";\r\nimport { BasemapsSelectorPopup } from \"./BasemapsSelectorPopup\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./BasemapTools.scss\";\r\n\r\nexport interface IBasemapToolbarButton {\r\n mode: BaseMapsMode;\r\n}\r\n\r\nexport const BasemapTools = ({ map }: { map: Map }): JSX.Element => {\r\n const { widgetMode, secondaryMapId } = useBaseMapContext();\r\n\r\n return (\r\n <>\r\n
\r\n {widgetMode === BaseMapsMode.default ? : null}\r\n {widgetMode === BaseMapsMode.opacity ? : null}\r\n {widgetMode === BaseMapsMode.swipe ? : null}\r\n
\r\n\r\n {!secondaryMapId && widgetMode !== BaseMapsMode.default ? : null}\r\n \r\n );\r\n};\r\n\r\nconst BasemapsToolbar = () => {\r\n const { configA } = useMapContext();\r\n const { setWidgetMode } = useBaseMapContext();\r\n return (\r\n <>\r\n {configA.widgets.SwipeWidgetEnabled ? (\r\n setWidgetMode(BaseMapsMode.swipe)}\r\n title={i18next.t(\"swipeButtonTooltip\")}\r\n >\r\n ) : null}\r\n {configA.widgets.MapOpacityWidgetEnabled ? (\r\n setWidgetMode(BaseMapsMode.opacity)}\r\n title={i18next.t(\"opacityButtonTooltip\")}\r\n >\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst OpacityTool = () => {\r\n const { secondaryMapId, layerOpacity, setLayerOpacity } = useBaseMapContext();\r\n return (\r\n <>\r\n \r\n {secondaryMapId ? (\r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst SplitTool = ({ map }) => {\r\n const { secondaryMapId } = useBaseMapContext();\r\n return (\r\n <>\r\n \r\n {secondaryMapId ? : null}\r\n \r\n );\r\n};\r\n\r\nconst OverlayCloseButton = () => {\r\n const { onOverlayMapClosed } = useBaseMapContext();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { BaseMapItem } from \"./BaseMapItem\";\r\nimport { IBasemap } from \"../config\";\r\nimport { inIframe } from \"../Toc/helpers\";\r\nimport { Map } from \"ol\";\r\nimport { Layer } from \"ol/layer\";\r\nimport { useRef, useEffect, useState } from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { BaseMapButton } from \"./BaseMapButton\";\r\nimport { useBaseMapContext } from \"../../Contexts/BaseMapContext\";\r\nimport { ChildMapsPopup } from \"./ChildMapsPopup\";\r\nimport { BaseMapsMode } from \"../enums\";\r\nimport \"./BaseMapWidget.scss\";\r\n\r\nexport interface ICustomBaseMap {\r\n config: IBasemap;\r\n id?: string;\r\n title?: string;\r\n baseLayers?: any;\r\n parentId?: any;\r\n childMaps?: any;\r\n img?: any;\r\n}\r\n\r\nexport interface BasemapSelector {\r\n basemapId: string;\r\n selectedMapId: string;\r\n}\r\n\r\nexport const BaseMapWidget = (props: { map: Map }): JSX.Element => {\r\n const { configA, setBaseMap } = useMapContext();\r\n const { subBasemapConfig, clickedBasemap } = useBaseMapContext();\r\n\r\n let resizeTimeoutHandler: number;\r\n\r\n const useExpand =\r\n !configA.colapseBasemaps ||\r\n configA.colapseBasemaps === \"none\" ||\r\n (configA.colapseBasemaps === \"iframe\" && !inIframe());\r\n\r\n const basemapSelectors: BasemapSelector[] = [];\r\n\r\n const [expanded, setExpanded] = useState(useExpand);\r\n const [previousWidth, setPreviousWidth] = useState(0);\r\n\r\n const previousWidthRef = useRef(previousWidth);\r\n const expandedRef = useRef(expanded);\r\n const mobileRef = useRef(false);\r\n\r\n const { primaryMapId, secondaryMapId, widgetMode, isOverlayModeActive, changeMap, secondMap, setSecondMap } =\r\n useBaseMapContext();\r\n\r\n useEffect(() => {\r\n if (useExpand) {\r\n mobileRef.current && toggleExpanded();\r\n window.addEventListener(\"resize\", () => onWindowResize());\r\n onWindowResize();\r\n }\r\n return window.removeEventListener(\"resize\", onWindowResize);\r\n }, []);\r\n\r\n useEffect(() => {\r\n expandedRef.current = expanded;\r\n }, [expanded]);\r\n\r\n useEffect(() => {\r\n previousWidthRef.current = previousWidth;\r\n }, [previousWidth]);\r\n\r\n useEffect(() => {\r\n setBaseMap(primaryMapId);\r\n }, [primaryMapId]);\r\n\r\n useEffect(() => {\r\n if (!secondaryMapId && secondMap) {\r\n secondMap.setZIndex(0);\r\n secondMap.setOpacity(1);\r\n secondMap.setVisible(false);\r\n setSecondMap(null);\r\n return;\r\n }\r\n if (widgetMode === BaseMapsMode.opacity) {\r\n if (secondaryMapId) {\r\n props.map\r\n .getLayers()\r\n .getArray()\r\n .map((basemapLayer: Layer) => {\r\n if (basemapLayer.get(\"id\") === secondaryMapId) {\r\n basemapLayer.setZIndex(1);\r\n basemapLayer.setVisible(true);\r\n setSecondMap(basemapLayer);\r\n }\r\n });\r\n }\r\n }\r\n }, [widgetMode, secondaryMapId]);\r\n\r\n const onWindowResize = () => {\r\n if (resizeTimeoutHandler) {\r\n window.clearTimeout(resizeTimeoutHandler);\r\n }\r\n\r\n resizeTimeoutHandler = window.setTimeout(() => {\r\n checkSize();\r\n }, 300);\r\n };\r\n\r\n const checkSize = () => {\r\n if (previousWidthRef.current === window.innerWidth) {\r\n return;\r\n }\r\n mobileRef.current = document.body.scrollWidth < (configA.basemapsCollapseThreshold || 544);\r\n\r\n setExpanded(!mobileRef.current);\r\n setPreviousWidth(window.innerWidth);\r\n };\r\n\r\n const toggleExpanded = () => {\r\n const newState = mobileRef.current || !useExpand ? !expandedRef.current : true;\r\n newState !== expandedRef.current && setExpanded(newState);\r\n };\r\n\r\n useEffect(() => {\r\n if (!clickedBasemap) {\r\n return;\r\n }\r\n clickedBasemap.id !== primaryMapId && changeMap(clickedBasemap.id);\r\n toggleExpanded();\r\n }, [clickedBasemap]);\r\n\r\n const getSelectedMapId = (basemap: ICustomBaseMap, selectedMapId: string): string => {\r\n const bmap = basemapSelectors.filter((val) => val.basemapId === basemap.id)[0];\r\n if (!bmap) {\r\n basemapSelectors.push({ basemapId: basemap.id, selectedMapId: selectedMapId });\r\n return basemap.id;\r\n }\r\n\r\n if (basemap.config.childMaps.filter((v) => v === selectedMapId).length > 0 || basemap.id === selectedMapId) {\r\n bmap.selectedMapId = selectedMapId;\r\n }\r\n\r\n return bmap.selectedMapId;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {expanded && configA.basemaps.length !== 1 ? (\r\n
\r\n {configA.basemaps\r\n .filter((basemap: ICustomBaseMap) => basemap.parentId === \"\")\r\n .map((basemap: ICustomBaseMap) => (\r\n \r\n ))}\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n {subBasemapConfig ? : null}\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { BaseMapItem } from \"./BaseMapItem\";\r\nimport { BasemapSelector, ICustomBaseMap } from \"./BasemapWidget\";\r\nimport { useBaseMapContext } from \"../../Contexts/BaseMapContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./BasemapsSelectorPopup.scss\";\r\n\r\nexport const BasemapsSelectorPopup = (): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const { primaryMapId, onOverlayMapClosed } = useBaseMapContext();\r\n\r\n const [maxWidth, setMaxWidth] = useState();\r\n\r\n const popupRef = useRef();\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"mousedown\", onClickOutside);\r\n window.addEventListener(\"resize\", onWindowResize);\r\n onWindowResize();\r\n return () => {\r\n document.removeEventListener(\"mousedown\", onClickOutside);\r\n window.removeEventListener(\"resize\", onWindowResize);\r\n };\r\n }, []);\r\n\r\n const onWindowResize = () =>\r\n //width decreased for case, when display height < 430px and map gallery is moved to right, to avoid toolbar overlap\r\n setMaxWidth(window.innerHeight < 431 ? window.innerWidth - 142 : window.innerWidth - 96);\r\n\r\n const onClickOutside = (event: MouseEvent | PointerEvent) => {\r\n const childPopup = document.getElementsByClassName(\"child-maps-popup\")[0];\r\n const isChildPopupClicked = childPopup && childPopup.contains(event.target as Node);\r\n\r\n popupRef.current &&\r\n !isChildPopupClicked &&\r\n !popupRef.current.contains(event.target as Node) &&\r\n onOverlayMapClosed();\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {configA.basemaps.length === 1 ? null : (\r\n
\r\n {configA.basemaps.map(\r\n (basemap: ICustomBaseMap) =>\r\n basemap.id !== \"WhiteMap\" &&\r\n ((basemap.childMaps.length > 0 && basemap.parentId === \"\") ||\r\n (basemap.parentId === \"\" && basemap.id !== primaryMapId)) && (\r\n \r\n )\r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst overlayBasemapSelectors: BasemapSelector[] = [];\r\n\r\nconst getSelectedMapId = (basemap: ICustomBaseMap) => {\r\n const bmap = overlayBasemapSelectors.filter((val) => val.basemapId === basemap.id)[0];\r\n if (!bmap) {\r\n overlayBasemapSelectors.push({\r\n basemapId: basemap.id,\r\n selectedMapId: basemap.id\r\n });\r\n return basemap.id;\r\n }\r\n return bmap.selectedMapId;\r\n};\r\n\r\nconst Item = ({ basemap }) => {\r\n return (\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport Portal from \"../../Popups/Portal\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { useBaseMapContext } from \"../../Contexts/BaseMapContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { ICustomBaseMap } from \"./BasemapWidget\";\r\nimport { SubBaseMapItem } from \"./SubBaseMapItem\";\r\nimport \"./ChildMapsPopup.scss\";\r\n\r\nexport interface IChildMapsPopupAnchor {\r\n element: HTMLDivElement;\r\n ref: React.RefObject;\r\n}\r\n\r\nexport const ChildMapsPopup = (): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const { subBasemapConfig, setSubBasemapConfig } = useBaseMapContext();\r\n\r\n const [anchor, setAnchor] = useState({ top: 0, left: 0 });\r\n const [childBasemaps, setChildBasemaps] = useState(null);\r\n const [width, setWidth] = useState(0);\r\n\r\n const popupRef = useRef();\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"mouseup\", onClickOutside);\r\n document.addEventListener(\"pointerup\", onClickOutside, false);\r\n window.addEventListener(\"resize\", onWindowResize);\r\n\r\n return () => {\r\n document.removeEventListener(\"mouseup\", onClickOutside);\r\n document.removeEventListener(\"pointerup\", onClickOutside);\r\n window.removeEventListener(\"resize\", onWindowResize);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n setChildBasemaps(getChildMaps(configA.basemaps, subBasemapConfig.id));\r\n const parent =\r\n document.querySelector(\"#\" + subBasemapConfig.id + \"-child\") ||\r\n document.querySelector(\"#\" + subBasemapConfig.id);\r\n const rect = parent.getBoundingClientRect();\r\n setAnchor({ top: rect.top, left: rect.left });\r\n\r\n setTimeout(() => {\r\n if (!popupRef.current) {\r\n return;\r\n }\r\n const popupRect = popupRef.current.getBoundingClientRect();\r\n let popupWidth = popupRect.width;\r\n popupRect.width > window.innerWidth && (popupWidth = window.innerWidth);\r\n width !== popupWidth && setWidth(popupWidth);\r\n }, 0);\r\n }, [subBasemapConfig]);\r\n\r\n const getChildMaps = (basemaps: any[], parentMapId: string): any[] =>\r\n basemaps.filter(\r\n (basemap: ICustomBaseMap) =>\r\n basemap.parentId === parentMapId || (basemap.id === parentMapId && basemap.parentId === \"\")\r\n );\r\n\r\n const onWindowResize = () => setSubBasemapConfig(null);\r\n\r\n const onClickOutside = (event: MouseEvent | PointerEvent) =>\r\n !popupRef.current.contains(event.target as Node) && setSubBasemapConfig(null);\r\n\r\n const left =\r\n (anchor.left + width > window.innerWidth\r\n ? anchor.left - (anchor.left + width - window.innerWidth) - 1\r\n : anchor.left) + \"px\";\r\n\r\n const top = anchor.top - 111 + \"px\";\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n setSubBasemapConfig(null)}\r\n className=\"esri-component esri-widget esri-interactive esri-widget--button esri-icon-close\"\r\n title={i18next.t(\"close\")}\r\n >\r\n
\r\n
\r\n {childBasemaps ? : null}\r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst ChildMaps = ({ childBasemaps }: { childBasemaps: ICustomBaseMap[] }) => (\r\n
\r\n
    \r\n {childBasemaps.map((basemap: ICustomBaseMap) => (\r\n
  • \r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n);\r\n","import i18next from \"i18next\";\r\nimport * as React from \"react\";\r\nimport { useCallback } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport \"./DragButton.scss\";\r\n\r\nconst minHeight = 0;\r\n\r\nexport const DragButton = ({\r\n height,\r\n setHeight,\r\n setHeightPercent\r\n}: {\r\n height: number;\r\n setHeight?: (height: number) => void;\r\n setHeightPercent?: (percent: number) => void;\r\n}): JSX.Element => {\r\n const { isMobile, isIFrame } = useAppContext();\r\n const maxHeight = document.body.clientHeight;\r\n\r\n const onMouseDown = useCallback(\r\n (e) => {\r\n const startPos = e.clientY;\r\n const onMouseMove = (event: MouseEvent) => {\r\n const newHeight = height - event.clientY + startPos;\r\n setHeight(newHeight >= minHeight ? (newHeight >= maxHeight ? maxHeight : newHeight) : minHeight);\r\n // const heightPercentile = Math.round((100 * newHeight) / document.body.clientHeight);\r\n // setHeightPercent(heightPercentile >= 0 ? (heightPercentile >= 100 ? 100 : heightPercentile) : 0);\r\n };\r\n const onMouseUp = () => {\r\n document.removeEventListener(\"mousemove\", onMouseMove);\r\n document.removeEventListener(\"mouseup\", onMouseUp);\r\n };\r\n document.addEventListener(\"mousemove\", onMouseMove);\r\n document.addEventListener(\"mouseup\", onMouseUp);\r\n },\r\n [height, maxHeight, minHeight]\r\n );\r\n\r\n const onTouchStart = useCallback(\r\n (e) => {\r\n const startPos = e.touches[0].clientY;\r\n const onTouchMove = (event: TouchEvent) => {\r\n const newHeight = height - event.touches[0].clientY + startPos;\r\n setHeight(newHeight >= minHeight ? (newHeight >= maxHeight ? maxHeight : newHeight) : minHeight);\r\n // const heightPercentile = (100 * newHeight) / document.body.clientHeight;\r\n // setHeightPercent(heightPercentile >= 0 ? (heightPercentile >= 100 ? 100 : heightPercentile) : 0);\r\n };\r\n const onTouchUp = () => {\r\n document.removeEventListener(\"touchmove\", onTouchMove);\r\n document.removeEventListener(\"touchend\", onTouchUp);\r\n };\r\n document.addEventListener(\"touchmove\", onTouchMove);\r\n document.addEventListener(\"touchend\", onTouchUp);\r\n },\r\n [height, maxHeight, minHeight]\r\n );\r\n\r\n const button = (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n\r\n return isMobile && !isIFrame ? (\r\n
onTouchStart(e)} title={i18next.t(\"swipeHandlerTooltip\")}>\r\n {button}\r\n
\r\n ) : (\r\n
onMouseDown(e)} title={i18next.t(\"swipeHandlerTooltip\")}>\r\n {button}\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\n\r\ninterface IRangeInputProps {\r\n id: string;\r\n value?: number;\r\n onChange: (value: number) => void;\r\n}\r\n\r\n/* use 'checked' only for 'controlled' component, when state is managed by it`s parent */\r\n/* use 'defaultChecked' only for 'uncontrolled' component, when state is not managed by parent */\r\n/* https://github.com/facebook/react/issues/13477#issuecomment-416003818 */\r\n\r\nexport const OpacityControl = ({ id, value, onChange }: IRangeInputProps): JSX.Element => {\r\n const percents = Math.round(value * 100);\r\n const left = percents + \"%\";\r\n return (\r\n
\r\n
\r\n \r\n
\r\n onChange(Number(e.target.value))}\r\n data-testid={id}\r\n />\r\n\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Map } from \"ol\";\r\nimport { Layer } from \"ol/layer\";\r\nimport { useEffect, useRef } from \"react\";\r\nimport { useBaseMapContext } from \"../../Contexts/BaseMapContext\";\r\nimport { DragButton } from \"./DragButton\";\r\n\r\nconst pixelRatio = window.devicePixelRatio;\r\n\r\nexport const SplitControl = ({ map }: { map: Map }): JSX.Element => {\r\n const { height, setHeight, secondaryMapId } = useBaseMapContext();\r\n\r\n const dragRef = useRef();\r\n const heightRef = useRef();\r\n const secondLayerRef = useRef();\r\n\r\n useEffect(() => {\r\n return () => {\r\n setHeight(document.body.clientHeight / 2);\r\n\r\n if (secondLayerRef.current) {\r\n secondLayerRef.current.setVisible(false);\r\n secondLayerRef.current.setZIndex(0);\r\n secondLayerRef.current.un(\"prerender\", onPreRender);\r\n secondLayerRef.current.un(\"postrender\", onPostRender);\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n heightRef.current = height * pixelRatio;\r\n secondLayerRef.current && secondLayerRef.current.changed();\r\n dragRef.current && ((dragRef.current as HTMLElement).style.top = document.body.clientHeight - height + \"px\");\r\n }, [height]);\r\n\r\n useEffect(() => {\r\n if (!secondaryMapId) {\r\n return;\r\n }\r\n\r\n //@ts-ignore\r\n secondLayerRef.current = map\r\n .getLayers()\r\n .getArray()\r\n .find((basemapLayer: Layer) => basemapLayer.get(\"id\") === secondaryMapId);\r\n if (!secondLayerRef.current) {\r\n return;\r\n }\r\n\r\n secondLayerRef.current.setVisible(true);\r\n secondLayerRef.current.setZIndex(1);\r\n\r\n secondLayerRef.current.on(\"prerender\", onPreRender);\r\n secondLayerRef.current.on(\"postrender\", onPostRender);\r\n }, [secondaryMapId]);\r\n\r\n const onPreRender = (event) => {\r\n const ctx = event.context;\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.rect(0, ctx.canvas.height - heightRef.current, ctx.canvas.width, heightRef.current);\r\n ctx.clip();\r\n };\r\n\r\n const onPostRender = (event) => {\r\n const ctx = event.context;\r\n ctx.restore();\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { ICustomBaseMap } from \"./BasemapWidget\";\r\nimport { useRef } from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { useBaseMapContext } from \"../../Contexts/BaseMapContext\";\r\nimport { BaseMapsMode } from \"../enums\";\r\nimport \"./BaseMapItem.scss\";\r\n\r\nexport interface ISubBaseMapItemProps {\r\n basemap: ICustomBaseMap;\r\n classNameDefault: string;\r\n classNameSelected: string;\r\n}\r\n\r\nexport const SubBaseMapItem = (props: ISubBaseMapItemProps): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const { primaryMapId, setSubBasemapConfig, setClickedBasemap, widgetMode, onOverlayMapSelected } =\r\n useBaseMapContext();\r\n\r\n const basemapRef = useRef();\r\n\r\n const basemapClass = props.basemap.id === primaryMapId ? props.classNameSelected : props.classNameDefault;\r\n\r\n const buttonClass =\r\n props.basemap.childMaps && props.basemap.childMaps.length > 0 && configA.basemaps\r\n ? \"arrow esri-icon-up\"\r\n : \"hidden-element\";\r\n\r\n const onClick = () =>\r\n widgetMode === BaseMapsMode.default\r\n ? setClickedBasemap(props.basemap)\r\n : props.basemap.id !== primaryMapId && onOverlayMapSelected(props.basemap.id);\r\n\r\n return (\r\n <>\r\n
\r\n
setSubBasemapConfig(props.basemap)}>\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n","import classNames from \"classnames\";\r\nimport React, { useCallback, useEffect, useRef } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { IBookmark } from \"./BookmarksWidget\";\r\n\r\nexport const Bookmark = ({ bookmark }: { bookmark: IBookmark }): JSX.Element => {\r\n const { bookmarks, setBookmarks, selectedBookmarkId, setSelectedBookmarkId } = useAppContext();\r\n const { setBaseMap } = useMapContext();\r\n\r\n const inputRef = useRef();\r\n\r\n useEffect(() => {\r\n inputRef.current &&\r\n selectedBookmarkId &&\r\n selectedBookmarkId === bookmark.id &&\r\n setTimeout(() => inputRef.current.focus(), 250);\r\n }, [selectedBookmarkId]);\r\n\r\n const onChangeName = useCallback(\r\n (name: string) => {\r\n const newBookmarks = [...bookmarks];\r\n newBookmarks.map((b) => b.id === bookmark.id && (b.name = name));\r\n setBookmarks(newBookmarks);\r\n },\r\n [bookmarks]\r\n );\r\n\r\n const onClick = () =>\r\n getMap()\r\n .getView()\r\n .fit(bookmark.extent, { duration: 1000, callback: () => setBaseMap(bookmark.basemap) });\r\n\r\n const onDelete = useCallback(() => setBookmarks([...bookmarks].filter((b) => b.id !== bookmark.id)), [bookmarks]);\r\n\r\n const onKeyDown = (e) => {\r\n if (e.code === \"Enter\" || e.code === \"NumpadEnter\" || e.code === \"Escape\") {\r\n setSelectedBookmarkId(null);\r\n inputRef.current && inputRef.current.blur();\r\n }\r\n };\r\n\r\n const onBlur = () => {\r\n inputRef.current && inputRef.current.blur();\r\n setSelectedBookmarkId(null);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n ) => onChangeName(e.target.value)}\r\n value={bookmark.name}\r\n onFocus={() => setSelectedBookmarkId(bookmark.id)}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Bookmark } from \"./Bookmark\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\n\r\nexport const BookmarkList = (): JSX.Element => {\r\n const { bookmarks } = useAppContext();\r\n\r\n return (\r\n
\r\n {bookmarks.map((b) => (\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n","import React, { useCallback } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { PopupButton } from \"../../Elements/PopupButton\";\r\nimport { BookmarkList } from \"./BookmarkList\";\r\nimport { getSnapshot } from \"./snapshot\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./BookmarksWidget.scss\";\r\n\r\nexport interface IBookmark {\r\n id: number;\r\n name: string;\r\n extent: number[];\r\n image: string;\r\n basemap: string;\r\n}\r\n\r\nexport const BookmarksWidget = (): JSX.Element => {\r\n const { bookmarks, setBookmarks, setSelectedBookmarkId } = useAppContext();\r\n const { baseMap } = useMapContext();\r\n\r\n const addBookmark = useCallback(() => {\r\n const map = getMap();\r\n const id = Date.now();\r\n const bkm: IBookmark = {\r\n id,\r\n name: \"\",\r\n extent: map.getView().calculateExtent(map.getSize()),\r\n image: getSnapshot(64, 64),\r\n basemap: baseMap\r\n };\r\n setBookmarks([...bookmarks, bkm]);\r\n setSelectedBookmarkId(id);\r\n }, [bookmarks, baseMap]);\r\n\r\n return (\r\n
\r\n
\r\n
{i18next.t(\"toolBar.bookmarks\")}
\r\n
\r\n \r\n
\r\n addBookmark()} />\r\n
\r\n
\r\n );\r\n};\r\n","import { getMap } from \"../GeoLiteMap\";\r\n\r\nconst pixelRatio = window.devicePixelRatio;\r\n\r\nexport const getSnapshot = (width = 100, height = 100): string => {\r\n const mapCanvas = document.createElement(\"canvas\");\r\n\r\n const [mapWidth, mapHeight] = getMap().getSize();\r\n const useHeight = mapWidth > mapHeight;\r\n const sx = useHeight ? (mapWidth - mapHeight) / 2 : 0;\r\n const sy = useHeight ? 0 : (mapHeight - mapWidth) / 2;\r\n const swh = useHeight ? mapHeight : mapWidth;\r\n\r\n mapCanvas.width = width;\r\n mapCanvas.height = height;\r\n const mapContext = mapCanvas.getContext(\"2d\");\r\n Array.prototype.forEach.call(document.querySelectorAll(\".ol-layer canvas\"), (canvas) => {\r\n if (canvas.width > 0) {\r\n const opacity = canvas.parentNode.style.opacity;\r\n mapContext.globalAlpha = opacity === \"\" ? 1 : Number(opacity);\r\n const transform = canvas.style.transform;\r\n // Get the transform parameters from the style's transform matrix\r\n const matrix = transform\r\n .match(/^matrix\\(([^\\(]*)\\)$/)[1]\r\n .split(\",\")\r\n .map(Number);\r\n // Apply the transform to the export map context\r\n CanvasRenderingContext2D.prototype.setTransform.apply(mapContext, matrix);\r\n mapContext.drawImage(canvas, sx, sy, swh, swh, 0, 0, width * pixelRatio, height * pixelRatio);\r\n }\r\n });\r\n\r\n return mapCanvas.toDataURL();\r\n};\r\n","import { Attribution, Control } from \"ol/control\";\r\nimport \"./Attribution.scss\";\r\n\r\nexport class AttributionButton extends Control {\r\n constructor() {\r\n super({ element: undefined });\r\n const attributionControl = new Attribution({\r\n collapsible: true,\r\n label: \"Autortiesības:\",\r\n collapseLabel: \"\",\r\n target: document.getElementsByClassName(\"bottom-widget-line\").item(0) as HTMLElement\r\n });\r\n\r\n const onClick = (e) => {\r\n const path = e.composedPath();\r\n const isAttributionClicked =\r\n path &&\r\n !!path.find((p) => {\r\n const classes = p.classList && p.classList.length && Array.from(p.classList);\r\n return classes && classes.includes(\"ol-attribution\");\r\n });\r\n\r\n isAttributionClicked && attributionControl.setCollapsed(path && !!path.find((p) => p.tagName === \"UL\"));\r\n };\r\n\r\n document.getElementsByClassName(\"bottom-widget-line\").item(0).addEventListener(\"click\", onClick);\r\n\r\n return attributionControl;\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Point, SimpleGeometry } from \"ol/geom\";\r\nimport { Vector as VectorSource } from \"ol/source\";\r\nimport { Vector as VectorLayer } from \"ol/layer\";\r\nimport { Feature, Map } from \"ol\";\r\nimport { Circle as CircleStyle, Fill, Stroke, Style } from \"ol/style\";\r\nimport { config } from \"../config\";\r\nimport { coordinatesConverter, EpsgCode } from \"@geo/js\";\r\nimport { unByKey } from \"ol/Observable\";\r\nimport { EventsKey } from \"ol/events\";\r\nimport { ToolbarButton } from \"../Toolbar/ToolbarButton\";\r\nimport i18next from \"i18next\";\r\nimport \"./GeoLocation.scss\";\r\n\r\nenum LocationState {\r\n Inactive = 0,\r\n Waiting = 1,\r\n Watching = 2,\r\n Tracking = 3\r\n}\r\n\r\nexport interface IPosition {\r\n coords: {\r\n latitude: number;\r\n longitude: number;\r\n };\r\n}\r\n\r\nconst centerGraphicStyle = new Style({\r\n image: new CircleStyle({\r\n radius: 6,\r\n fill: new Fill({\r\n color: \"#fff\"\r\n }),\r\n stroke: new Stroke({\r\n color: \"#00aeea\",\r\n width: 4\r\n })\r\n })\r\n});\r\n\r\nconst outlineGraphicStyle = new Style({\r\n image: new CircleStyle({\r\n radius: 10,\r\n stroke: new Stroke({\r\n color: \"#00aeea4d\",\r\n width: 4\r\n })\r\n })\r\n});\r\nexport const GeoLocationButton = ({ map }: { map: Map }): JSX.Element => {\r\n const [locationState, setLocationState] = useState(LocationState.Inactive);\r\n const [position, setPosition] = useState({ latitude: 0, longitude: 0 });\r\n const [isMapMoving, setIsMapMoving] = useState(false);\r\n const gpsWatcher = useRef();\r\n const interactingWatcher = useRef();\r\n const stationaryWatcher = useRef();\r\n const centerGraphic = useRef();\r\n const outlineGraphic = useRef();\r\n const pointLayer = useRef>();\r\n\r\n const geolocationOptions = config\r\n ? config.geoLocation.geolocationOptions\r\n : {\r\n maximumAge: 0,\r\n timeout: 15000,\r\n enableHighAccuracy: true\r\n };\r\n\r\n useEffect(() => {\r\n if (locationState === LocationState.Waiting) {\r\n startLocate();\r\n } else if (locationState === LocationState.Tracking) {\r\n startTracking();\r\n } else if (locationState === LocationState.Inactive) {\r\n stopLocate();\r\n }\r\n }, [locationState]);\r\n\r\n useEffect(() => {\r\n if (position.latitude === 0 && position.longitude === 0) {\r\n return;\r\n }\r\n\r\n placeMarker();\r\n if (locationState === LocationState.Waiting && !isMapMoving) {\r\n setIsMapMoving(true);\r\n mapGoTo(undefined, true);\r\n } else if (locationState === LocationState.Tracking && !isMapMoving) {\r\n setIsMapMoving(true);\r\n mapGoTo(map.getView().getZoom());\r\n }\r\n }, [position]);\r\n\r\n const onSuccess = (position: IPosition) => {\r\n const point = coordinatesConverter.convert(\r\n [position.coords.longitude, position.coords.latitude],\r\n EpsgCode.Wgs84,\r\n EpsgCode.Lks92\r\n );\r\n setPosition({ latitude: point[1], longitude: point[0] });\r\n };\r\n\r\n const onError = () => {\r\n setLocationState(LocationState.Inactive);\r\n };\r\n\r\n const startLocate = () => {\r\n gpsWatcher.current = navigator.geolocation.watchPosition(onSuccess, onError, geolocationOptions);\r\n };\r\n\r\n const stopLocate = () => {\r\n gpsWatcher.current && navigator.geolocation.clearWatch(gpsWatcher.current);\r\n\r\n stopTracking();\r\n\r\n if (pointLayer.current) {\r\n pointLayer.current.getSource().clear();\r\n //@ts-ignore\r\n map.removeLayer(pointLayer.current);\r\n pointLayer.current = null;\r\n centerGraphic.current = null;\r\n outlineGraphic.current = null;\r\n }\r\n };\r\n\r\n const startTracking = () => {\r\n //@ts-ignore\r\n const view = map.getView();\r\n\r\n if (!interactingWatcher.current) {\r\n interactingWatcher.current = setInterval(() => {\r\n if (view.getInteracting() && locationState != LocationState.Watching) {\r\n setLocationState(LocationState.Watching);\r\n }\r\n }, 150);\r\n }\r\n if (!stationaryWatcher.current) {\r\n //@ts-ignore\r\n stationaryWatcher.current = map.on(\"moveend\", refreshPosition);\r\n }\r\n\r\n if (!view.getInteracting() && !view.getAnimating()) {\r\n refreshPosition();\r\n }\r\n\r\n document.addEventListener(\"stopTracking\", () => {\r\n stopTracking();\r\n setLocationState(LocationState.Watching);\r\n });\r\n };\r\n\r\n const stopTracking = () => {\r\n if (stationaryWatcher.current) {\r\n unByKey(stationaryWatcher.current);\r\n stationaryWatcher.current = null;\r\n }\r\n if (interactingWatcher.current) {\r\n clearInterval(interactingWatcher.current);\r\n interactingWatcher.current = null;\r\n }\r\n document.removeEventListener(\"stopTracking\", stopTracking);\r\n };\r\n\r\n const refreshPosition = () => {\r\n if (locationState === LocationState.Tracking) {\r\n setPosition({\r\n latitude: position.latitude,\r\n longitude: position.longitude\r\n });\r\n }\r\n };\r\n\r\n const placeMarker = () => {\r\n const centerPoint = new Point([position.latitude, position.longitude]);\r\n\r\n centerGraphic.current = new Feature();\r\n centerGraphic.current.setStyle(centerGraphicStyle);\r\n centerGraphic.current.setGeometry(centerPoint);\r\n\r\n outlineGraphic.current = new Feature();\r\n outlineGraphic.current.setStyle(outlineGraphicStyle);\r\n outlineGraphic.current.setGeometry(centerPoint);\r\n\r\n if (!pointLayer.current) {\r\n pointLayer.current = new VectorLayer({\r\n //@ts-ignore\r\n map: map,\r\n source: new VectorSource({\r\n features: [centerGraphic.current, outlineGraphic.current]\r\n })\r\n });\r\n }\r\n };\r\n\r\n const mapGoTo = async (maxZoom: number, enableTracking?: boolean) =>\r\n map.getView().fit(centerGraphic.current.getGeometry() as SimpleGeometry, {\r\n duration: 1000,\r\n maxZoom,\r\n callback: () => {\r\n setIsMapMoving(false);\r\n enableTracking && setLocationState(LocationState.Tracking);\r\n }\r\n });\r\n\r\n const onClick = () => {\r\n let nextState = locationState;\r\n switch (locationState) {\r\n case LocationState.Inactive:\r\n nextState = LocationState.Waiting;\r\n break;\r\n case LocationState.Watching:\r\n nextState = LocationState.Tracking;\r\n break;\r\n default:\r\n nextState = LocationState.Inactive;\r\n break;\r\n }\r\n setLocationState(nextState);\r\n };\r\n\r\n const buttonClassName =\r\n locationState === LocationState.Inactive\r\n ? \"gps-inactive\"\r\n : locationState === LocationState.Waiting\r\n ? \"gps-waiting\"\r\n : locationState === LocationState.Tracking\r\n ? \"gps-tracking\"\r\n : \"gps-watching\";\r\n\r\n const iconClassName = locationState === LocationState.Waiting ? \"gps-spinner\" : \"icon-geolite-gps\";\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Point } from \"ol/geom\";\r\nimport { config } from \"../config\";\r\nimport i18next from \"i18next\";\r\nimport { Map } from \"ol\";\r\n\r\nexport const HomeButton = ({ map }: { map: Map }): JSX.Element => {\r\n const onClick = () => {\r\n const view = map.getView();\r\n //@ts-ignore\r\n if (!view || !view.viewportSize_) {\r\n return;\r\n }\r\n //@ts-ignore\r\n const resolutionX = config.default.extentSize[0] / view.viewportSize_[0];\r\n //@ts-ignore\r\n const resolutionY = config.default.extentSize[1] / view.viewportSize_[1];\r\n const zoom = view.getZoomForResolution(resolutionX > resolutionY ? resolutionX : resolutionY);\r\n\r\n view.fit(new Point(config.default.center), {\r\n maxZoom: zoom,\r\n duration: 1000\r\n });\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport classNames from \"classnames\";\r\nimport { WidgetToolbar } from \"../Widget/WidgetToolbar\";\r\nimport { WidgetToolbarButton } from \"../Widget/WidgetToolbarButton\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { Overlay } from \"ol\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { useConvertContext } from \"../../Contexts/ConvertContext\";\r\nimport { CoordSystemSelect } from \"./CoordSystemSelect\";\r\nimport { CoordinateInput } from \"./CoordinateInput\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { zoomToCoordinates } from \"../mapFunctions\";\r\nimport { ShareLocation } from \"./ShareLocation\";\r\nimport { WidgetWarning } from \"./WidgetWarning\";\r\nimport \"./ConvertWidget.scss\";\r\n\r\nexport const ConvertWidget = (): JSX.Element => {\r\n const { mapClick, setShowToast } = useAppContext();\r\n const { placingPin, setPlacing, setIdentifyCoordinates } = useMapContext();\r\n const {\r\n coordinates,\r\n setCoordinates,\r\n coordinatesString,\r\n pinPlaced,\r\n setPinPlaced,\r\n coordinatesInvalid,\r\n setCoordinatesInvalid\r\n } = useConvertContext();\r\n\r\n const [sharingActive, setSharingActive] = useState(false);\r\n const [nothingIdentified, setNothingIdentified] = useState(false);\r\n\r\n const pinRef = useRef();\r\n const widgetRef = useRef();\r\n\r\n useEffect(() => {\r\n return () => {\r\n pinRef.current && getMap().removeOverlay(pinRef.current);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (placingPin) {\r\n pinRef.current = new Overlay({\r\n element: createPin(),\r\n offset: [0, -12],\r\n positioning: \"bottom-center\"\r\n });\r\n getMap().addOverlay(pinRef.current);\r\n setPinPlaced(true);\r\n return;\r\n }\r\n pinRef.current && getMap().removeOverlay(pinRef.current);\r\n }, [placingPin]);\r\n\r\n useEffect(() => {\r\n mapClick && placingPin && setCoordinates(getMap().getEventCoordinate(mapClick.originalEvent));\r\n mapClick && placingPin && setPinPlaced(true);\r\n }, [mapClick]);\r\n\r\n const onPlace = useCallback(() => {\r\n setPlacing(!placingPin);\r\n }, [placingPin]);\r\n\r\n useEffect(() => {\r\n coordinates ? pinRef.current && pinRef.current.setPosition(coordinates) : setPinPlaced(false);\r\n setNothingIdentified(false);\r\n }, [coordinates]);\r\n\r\n const onClear = () => {\r\n setPlacing(false);\r\n setPinPlaced(false);\r\n setSharingActive(false);\r\n setCoordinates(undefined);\r\n };\r\n\r\n const onIdentify = () => {\r\n document.addEventListener(\"noIdentifyResults\", () => setNothingIdentified(true), { once: true });\r\n setIdentifyCoordinates({ timestamp: Math.random() * 1234, coordinates });\r\n };\r\n\r\n const onZoom = () => coordinates && zoomToCoordinates(coordinates);\r\n\r\n const onCopy = useCallback(() => {\r\n const element = widgetRef.current && widgetRef.current.getBoundingClientRect();\r\n if (!element) {\r\n return;\r\n }\r\n\r\n navigator.clipboard.writeText(coordinatesString);\r\n setShowToast({\r\n position: [element.x + 53 - coordinatesString.length, element.y + 98],\r\n title: i18next.t(\"coordinateConversion.copySuccess\"),\r\n text: coordinatesString,\r\n classname: \"green-toast\"\r\n });\r\n }, [coordinatesString]);\r\n\r\n const onShare = useCallback(() => {\r\n setSharingActive(!sharingActive);\r\n }, [sharingActive, coordinates]);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
{i18next.t(\"coordinates.coordinateConversion\")}
\r\n
\r\n \r\n \r\n {pinPlaced ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n {sharingActive ? : null}\r\n {coordinatesInvalid ? (\r\n setCoordinatesInvalid(false)}\r\n />\r\n ) : null}\r\n {nothingIdentified ? (\r\n setNothingIdentified(false)}\r\n />\r\n ) : null}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst createPin = () => {\r\n const element = document.createElement(\"span\");\r\n element.id = \"convert-marker\";\r\n element.classList.add(\"icon-geolite-map-pin\");\r\n const shadow = document.createElement(\"span\");\r\n shadow.classList.add(\"icon-geolite-map-pin\");\r\n element.append(shadow);\r\n\r\n return element;\r\n};\r\n","import React, { useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { useConvertContext } from \"../../Contexts/ConvertContext\";\r\nimport { IMultiRowList } from \"../Coordinates/DropdownList\";\r\nimport { DropdownType } from \"../enums\";\r\nimport { AdvancedDropdown } from \"../Coordinates/AdvancedDropdown\";\r\nimport { coordinateFormat } from \"../Coordinates/CoordinateUtils\";\r\nimport \"./CoordSystemSelect.scss\";\r\n\r\nconst xArrow = \"\\u2192 \";\r\nconst yArrow = \"\\u2191 \";\r\nconst replacement = \"x(N) \" + yArrow + \", y(E) \" + xArrow;\r\nconst replacement2 = \"x(E) \" + xArrow + \", y(N) \" + yArrow;\r\n\r\nexport const CoordSystemSelect = (): JSX.Element => {\r\n const { coordinates, formatType, setFormatType, allCoordinates } = useConvertContext();\r\n\r\n const [formatName, setFormatName] = useState(\"LKS92\");\r\n\r\n const changeFormat = (attribute?: IMultiRowList) => {\r\n if (!attribute) {\r\n return;\r\n }\r\n\r\n const formatNameNew = attribute.labelRows[0].toString().replace(replacement, \"\").replace(replacement2, \"\");\r\n setFormatType(attribute.value as coordinateFormat);\r\n setFormatName(formatNameNew);\r\n };\r\n\r\n return (\r\n
\r\n changeFormat(at)}\r\n chevronClass={[\"esri-icon-up\", \"esri-icon-down\"]}\r\n />\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { convertToPoint, IInputCoordinates, validateCoords } from \"../Coordinates/CoordinateUtils\";\r\nimport { useConvertContext } from \"../../Contexts/ConvertContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./CoordinateInput.scss\";\r\n\r\nconst xArrow = \"\";\r\nconst yArrow = \"\";\r\n\r\nexport const CoordinateInput = (): JSX.Element => {\r\n const { setPlacing } = useMapContext();\r\n const { formatType, setCoordinates, inputCoordinates, setPinPlaced, setCoordinatesInvalid } = useConvertContext();\r\n const [value, setValue] = useState(inputCoordinates);\r\n\r\n const saveCoordinates = (coordinates: IInputCoordinates) => {\r\n setValue({ format: formatType, x: coordinates.x, y: coordinates.y });\r\n if (validateCoords(coordinates, formatType)) {\r\n const coords = convertToPoint(formatType, coordinates);\r\n coords && coords.x && setCoordinates([coords.x, coords.y]);\r\n setCoordinatesInvalid(false);\r\n setPlacing(true);\r\n } else {\r\n setCoordinatesInvalid(true);\r\n setPinPlaced(false);\r\n }\r\n };\r\n\r\n const onInputChange = (evt: any) => {\r\n const xValues = value.x;\r\n const yValues = value.y;\r\n const type = evt.target.name;\r\n switch (type) {\r\n case \"x\":\r\n xValues[0] = evt.target.value;\r\n break;\r\n case \"x1\":\r\n xValues[1] = evt.target.value;\r\n break;\r\n case \"x2\":\r\n xValues[2] = evt.target.value;\r\n break;\r\n case \"y\":\r\n yValues[0] = evt.target.value;\r\n break;\r\n case \"y1\":\r\n yValues[1] = evt.target.value;\r\n break;\r\n case \"y2\":\r\n yValues[2] = evt.target.value;\r\n break;\r\n }\r\n saveCoordinates({ x: xValues, y: yValues } as IInputCoordinates);\r\n };\r\n\r\n useEffect(() => {\r\n inputCoordinates.format === \"LKSGEO\"\r\n ? setValue({ format: inputCoordinates.format, x: inputCoordinates.y, y: inputCoordinates.x })\r\n : setValue(inputCoordinates);\r\n }, [inputCoordinates]);\r\n\r\n return (\r\n
\r\n {value.format === \"DD\" ? (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n ) : value.format === \"LKS\" ? (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n ) : value.format === \"LKSGEO\" ? (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n ) : value.format === \"DDM\" ? (\r\n <>\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n ) : value.format === \"DMS\" ? (\r\n <>\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n ) : value.format === \"MGRS\" ? (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst InputField = ({\r\n val,\r\n name,\r\n onChange,\r\n symbol,\r\n isMGRS\r\n}: {\r\n val: string | number;\r\n name: string;\r\n onChange: (e) => void;\r\n symbol?: string;\r\n isMGRS?: boolean;\r\n}) => {\r\n return (\r\n <>\r\n \r\n {symbol ? {symbol} : null}\r\n \r\n );\r\n};\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useConvertContext } from \"../../Contexts/ConvertContext\";\r\nimport { replaceUrlParam } from \"../utils\";\r\nimport { WidgetInput } from \"../Widget/WidgetInput\";\r\n\r\nexport const ShareLocation = (): JSX.Element => {\r\n const { setShowToast } = useAppContext();\r\n const { coordinates } = useConvertContext();\r\n\r\n const shareInputRef = useRef();\r\n\r\n const params = Math.round(coordinates[0]) + \",\" + Math.round(coordinates[1]);\r\n const url = replaceUrlParam(\"pos\", params);\r\n\r\n useEffect(() => {\r\n const element = shareInputRef.current && shareInputRef.current.getBoundingClientRect();\r\n if (!element) {\r\n return;\r\n }\r\n\r\n navigator.clipboard.writeText(url);\r\n setShowToast({\r\n position: [element.x + 80, element.y - 4],\r\n title: \"URL nokopēts!\",\r\n classname: \"green-toast\"\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n console.log(\"do nothing\")} readOnly={true} />\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./WidgetWarning.scss\";\r\n\r\nexport const WidgetWarning = ({ text, onClose }: { text: string; onClose: () => void }): JSX.Element => {\r\n return (\r\n
\r\n
\r\n
!
\r\n
{text}
\r\n
\r\n ⤫\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { DropdownType } from \"../enums\";\r\nimport { DropdownList, IMultiRowList, ISingleRowList } from \"./DropdownList\";\r\n\r\nexport interface IAdvancedDropdown {\r\n selectedValue: number | string;\r\n attributes: IMultiRowList[] | ISingleRowList[];\r\n text?: string | number | string[] | number[];\r\n multiLineText?: boolean;\r\n hideTextOnOpen?: boolean;\r\n buttonAsRow?: boolean;\r\n type: DropdownType;\r\n title: string;\r\n alwaysOpen: boolean;\r\n closeOnSubmit: boolean;\r\n clicked: (attribute: IMultiRowList | ISingleRowList) => void;\r\n chevronClass?: string[];\r\n onToggle?: (expanded: boolean) => void;\r\n}\r\n\r\nexport const AdvancedDropdown = (props: IAdvancedDropdown): JSX.Element => {\r\n const [expanded, setExpanded] = useState(props.alwaysOpen);\r\n const [attributes, setAttributes] = useState(props.attributes);\r\n\r\n const myRef = useRef();\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"mousedown\", (e) => handleClick(e));\r\n return document.removeEventListener(\"mousedown\", (e) => handleClick(e));\r\n }, []);\r\n\r\n useEffect(() => {\r\n props.onToggle && props.onToggle(expanded);\r\n }, [expanded]);\r\n\r\n useEffect(() => {\r\n setAttributes(props.attributes);\r\n }, [props.attributes]);\r\n\r\n const handleClick = (e) =>\r\n myRef.current && !props.alwaysOpen && !myRef.current.contains(e.target) && setExpanded(false);\r\n\r\n const clicked = (attribute: IMultiRowList | ISingleRowList) => {\r\n props.clicked(attribute);\r\n setExpanded(props.alwaysOpen ? true : !props.closeOnSubmit);\r\n };\r\n\r\n const toggleList = () => setExpanded(props.alwaysOpen ? true : !expanded);\r\n\r\n const Button = () => (\r\n
\r\n {props.alwaysOpen ? null : (\r\n <>\r\n {props.multiLineText ? (\r\n props.text && Array.isArray(props.text) ? (\r\n \r\n {props.text.map((element: string | number) => (\r\n {element}\r\n ))}\r\n \r\n ) : (\r\n \r\n {[]}\r\n \r\n )\r\n ) : (\r\n \r\n {props.text || \"\"}\r\n \r\n )}\r\n {props.chevronClass ? (\r\n
\r\n ) : null}\r\n \r\n )}\r\n
\r\n );\r\n\r\n const RowButton = () => (\r\n
\r\n {props.alwaysOpen ? null : (\r\n <>\r\n {props.selectedValue\r\n ? (props.attributes as IMultiRowList[]).map((attribute: IMultiRowList, i: number) =>\r\n attribute.value === props.selectedValue && attribute.labelRows ? (\r\n props.clicked(attribute)}\r\n className=\"listRow\"\r\n >\r\n {attribute.labelRows.map((row: string | number, i: number) => (\r\n {row}\r\n ))}\r\n \r\n ) : null\r\n )\r\n : null}\r\n\r\n {props.chevronClass ? (\r\n
\r\n ) : null}\r\n \r\n )}\r\n
\r\n );\r\n\r\n return (\r\n <>\r\n
\r\n {props.hideTextOnOpen && expanded ? null : props.buttonAsRow ? :
\r\n \r\n );\r\n};\r\n","import { coordinatesConverter, EpsgCode } from \"@geo/js\";\r\n// import { IValues } from \"@geo/react\";\r\n// import { loadModules } from \"esri-loader\";\r\n// import { getMapViewSpatialReference } from \"src/EsriMap\";\r\n\r\ninterface IValues {\r\n x: string[];\r\n y: string[];\r\n}\r\n\r\nconst converterOptions = {\r\n template: \"{y}, {x}\", // https://en.wikipedia.org/wiki/ISO_6709\r\n systems: [\"dd\", \"lks\", \"ddm\", \"dms\", \"mgrs\"],\r\n latlngDesignators: false\r\n};\r\n\r\nexport function trimCoord(coordinate: string, type: string) {\r\n let newCoordinate = coordinate;\r\n const coordString = coordinate.split(\" \");\r\n if (type === \"dd\") {\r\n const x = parseFloat(coordString[0].replace(\"N\", \"\"));\r\n const y = parseFloat(coordString[1].replace(\"E\", \"\"));\r\n newCoordinate = x + \"°, \" + y + \"°\";\r\n } else if (type === \"ddm\") {\r\n const x = parseFloat(coordString[1].replace(\"N\", \"\"));\r\n const y = parseFloat(coordString[3].replace(\"E\", \"\"));\r\n newCoordinate = parseInt(coordString[0], 10) + \"° \" + x + \"', \" + parseInt(coordString[2], 10) + \"° \" + y + \"'\";\r\n } else if (type === \"dms\") {\r\n const x = parseFloat(coordString[2].replace(\"N\", \"\"));\r\n const y = parseFloat(coordString[5].replace(\"E\", \"\"));\r\n newCoordinate =\r\n parseInt(coordString[0], 10) +\r\n \"° \" +\r\n coordString[1] +\r\n \"' \" +\r\n // tslint:disable-next-line: quotemark\r\n x +\r\n '\", ' +\r\n parseInt(coordString[3], 10) +\r\n \"° \" +\r\n coordString[4] +\r\n \"' \" +\r\n y +\r\n '\"';\r\n } else if (type === \"mgrs\") {\r\n newCoordinate = coordinate;\r\n }\r\n return newCoordinate;\r\n}\r\n\r\nexport interface IInputCoordinates {\r\n x: (string | number)[];\r\n y?: (string | number)[];\r\n format?: coordinateFormat;\r\n}\r\n\r\nexport const coordToObject = (coordinate: string, type: coordinateFormat): IInputCoordinates => {\r\n const coordString = coordinate.split(\" \");\r\n if (type === \"LKS\" || type === \"LKSGEO\") {\r\n const x = parseFloat(coordString[0]).toFixed();\r\n const y = parseFloat(coordString[1]).toFixed();\r\n return { x: [x], y: [y], format: type };\r\n } else if (type === \"DD\") {\r\n const x = parseFloat(coordString[0].replace(\"N\", \"\"));\r\n const y = parseFloat(coordString[1].replace(\"E\", \"\"));\r\n return { x: [x], y: [y], format: type };\r\n } else if (type === \"DDM\") {\r\n const x0 = parseFloat(coordString[0]);\r\n const x1 = parseFloat(coordString[1].replace(\"N\", \"\"));\r\n const y0 = parseFloat(coordString[2]);\r\n const y1 = parseFloat(coordString[3].replace(\"E\", \"\"));\r\n return { x: [x0, x1], y: [y0, y1], format: type };\r\n } else if (type === \"DMS\") {\r\n const x0 = parseFloat(coordString[0]);\r\n const x1 = parseFloat(coordString[1]);\r\n const x2 = parseFloat(coordString[2].replace(\"N\", \"\"));\r\n const y0 = parseFloat(coordString[3]);\r\n const y1 = parseFloat(coordString[4]);\r\n const y2 = parseFloat(coordString[5].replace(\"E\", \"\"));\r\n return { x: [x0, x1, x2], y: [y0, y1, y2], format: type };\r\n } else if (type === \"MGRS\") {\r\n const x = coordString[0] + coordString[1] + coordString[2] + coordString[3];\r\n return { x: [x], format: type };\r\n }\r\n return;\r\n};\r\n\r\nexport const convertToString = (format: string, coords: number[]): string => {\r\n if (!coords || !coords.length || !format) {\r\n return \"\";\r\n }\r\n\r\n if (format === \"LKS\") {\r\n return trimCoord(coords[0].toFixed() + \", \" + coords[1].toFixed(), format.toLowerCase());\r\n }\r\n if (format === \"LKSGEO\") {\r\n return trimCoord(coords[1].toFixed() + \", \" + coords[0].toFixed(), format.toLowerCase());\r\n }\r\n if (format === \"DD\" || format === \"DDM\" || format === \"DMS\") {\r\n const wgs = coordinatesConverter.convert(coords, EpsgCode.Lks92, EpsgCode.Wgs84);\r\n const formated = coordinatesConverter.getLatLngCoord(\r\n { lat: wgs[0], lng: wgs[1] },\r\n converterOptions,\r\n format.toLowerCase()\r\n );\r\n return trimCoord(typeof formated === \"string\" ? formated : formated.x + \" \" + formated.y, format.toLowerCase());\r\n }\r\n if (format === \"MGRS\") {\r\n const wgs = coordinatesConverter.convert(coords, EpsgCode.Lks92, EpsgCode.Wgs84);\r\n const mgrs = coordinatesConverter.getLatLngCoord(\r\n { lat: wgs[1], lng: wgs[0] },\r\n converterOptions,\r\n format.toLowerCase()\r\n );\r\n return trimCoord(mgrs as string, format.toLowerCase());\r\n }\r\n return \"\";\r\n};\r\n\r\nexport const convertToPoint = (format: coordinateFormat, coords: IInputCoordinates) => {\r\n const xy: { x: number | undefined; y: number | undefined } = {\r\n x: undefined,\r\n y: undefined\r\n };\r\n if (format === \"DD\") {\r\n const converted = coordinatesConverter.convert(\r\n [Number(coords.y[0]), Number(coords.x[0])],\r\n EpsgCode.Wgs84,\r\n EpsgCode.Lks92\r\n );\r\n xy.x = converted[1];\r\n xy.y = converted[0];\r\n }\r\n if (format === \"DDM\") {\r\n const dmFormat = {\r\n lat: { deg: Number(coords.x[0]), min: Number(coords.x[1]) },\r\n lng: { deg: Number(coords.y[0]), min: Number(coords.y[1]) }\r\n };\r\n const wgs = coordinatesConverter.convertDMtoWGS84(dmFormat);\r\n const converted = coordinatesConverter.convert([wgs.lng, wgs.lat], EpsgCode.Wgs84, EpsgCode.Lks92);\r\n xy.x = converted[1];\r\n xy.y = converted[0];\r\n }\r\n if (format === \"DMS\") {\r\n const dmsFormat = {\r\n lat: { deg: Number(coords.x[0]), min: Number(coords.x[1]), sec: Number(coords.x[2]) },\r\n lng: { deg: Number(coords.y[0]), min: Number(coords.y[1]), sec: Number(coords.y[2]) }\r\n };\r\n const wgs = coordinatesConverter.convertDMStoWGS84(dmsFormat);\r\n const converted = coordinatesConverter.convert([wgs.lng, wgs.lat], EpsgCode.Wgs84, EpsgCode.Lks92);\r\n xy.x = converted[1];\r\n xy.y = converted[0];\r\n }\r\n if (format === \"LKS\") {\r\n xy.x = Number(coords.x[0]);\r\n xy.y = Number(coords.y[0]);\r\n }\r\n if (format === \"LKSGEO\") {\r\n xy.x = Number(coords.x[0]);\r\n xy.y = Number(coords.y[0]);\r\n }\r\n if (format === \"MGRS\") {\r\n const wgs = coordinatesConverter.convertMGRStoWGS84(coords.x[0].toString());\r\n const converted = coordinatesConverter.convert([wgs.lng, wgs.lat], EpsgCode.Wgs84, EpsgCode.Lks92);\r\n xy.x = converted[1];\r\n xy.y = converted[0];\r\n }\r\n\r\n return xy.x && xy.y ? xy : null;\r\n};\r\n\r\nexport type coordinateFormat = \"DDM\" | \"DMS\" | \"MGRS\" | \"LKS\" | \"LKSGEO\" | \"DD\";\r\n\r\nexport function validateCoords(coords: IInputCoordinates, format: coordinateFormat): boolean {\r\n let validLength = 1;\r\n let valid = true;\r\n\r\n if (format === \"DDM\") {\r\n validLength = 2;\r\n } else if (format === \"DMS\") {\r\n validLength = 3;\r\n }\r\n if (\r\n (format === \"MGRS\" && coords.x.length !== validLength) ||\r\n (format !== \"MGRS\" && (coords.x.length !== validLength || coords.y.length !== validLength))\r\n ) {\r\n valid = false;\r\n }\r\n\r\n if (valid) {\r\n const array = format === \"MGRS\" ? Object.values({ x: coords.x }) : Object.values(coords);\r\n array.forEach((axis) => {\r\n axis.forEach((value: string) => {\r\n if (!value || value === \"NaN\") {\r\n valid = false;\r\n }\r\n });\r\n });\r\n }\r\n return valid;\r\n}\r\n","import * as React from \"react\";\r\nimport { Map } from \"ol\";\r\nimport { FC, useEffect, useRef, useState } from \"react\";\r\nimport { AdvancedDropdown } from \"./AdvancedDropdown\";\r\nimport { IMultiRowList } from \"./DropdownList\";\r\nimport { convertToString } from \"./CoordinateUtils\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { DropdownType } from \"../enums\";\r\nimport i18next from \"i18next\";\r\nimport \"./CoordinateWidget.scss\";\r\n\r\nexport interface ICoords {\r\n value: string;\r\n labelRows: [string, string];\r\n}\r\n\r\ninterface ICoordinateWidget {\r\n map: Map;\r\n}\r\n\r\nconst xArrow = \"\\u2192 \";\r\nconst yArrow = \"\\u2191 \";\r\nconst replacement = \"x(N) \" + yArrow + \", y(E) \" + xArrow;\r\nconst replacement2 = \"x(E) \" + xArrow + \", y(N) \" + yArrow;\r\n\r\nexport const CoordinateWidget: FC = (props: ICoordinateWidget) => {\r\n const { configA, formatType, setFormatType } = useMapContext();\r\n const [currentPoint, setCurrentPoint] = useState();\r\n const [allCoordinates, setAllCoordinates] = useState([]);\r\n const [coordinates, setCoordinates] = useState(convertToString(\"LKS\", props.map.getView().getCenter()));\r\n const [formatName, setFormatName] = useState(\"LKS92\");\r\n const [expanded, setExpanded] = useState(false);\r\n\r\n const formatTypeRef = useRef(formatType);\r\n\r\n useEffect(() => {\r\n setCurrentPoint(props.map.getView().getCenter());\r\n props.map.on(\"pointermove\", onPointerMove);\r\n\r\n return () => props.map.un(\"pointermove\", onPointerMove);\r\n }, []);\r\n\r\n useEffect(() => {\r\n formatTypeRef.current = formatType;\r\n }, [formatType]);\r\n\r\n useEffect(() => {\r\n expanded &&\r\n currentPoint &&\r\n setAllCoordinates(\r\n configA.coordinateFormats.map((format: string) => {\r\n const coordinates = convertToString(format, currentPoint);\r\n const coordFormat =\r\n format === \"LKS\"\r\n ? format + \"92 x(E) \" + xArrow + \", y(N) \" + yArrow\r\n : format === \"LKSGEO\"\r\n ? format.replace(\"GEO\", \"\") + \"92 TM x(N) \" + yArrow + \", y(E) \" + xArrow\r\n : format;\r\n return { value: format, labelRows: [coordFormat, coordinates] };\r\n })\r\n );\r\n }, [currentPoint, expanded]);\r\n\r\n const onPointerMove = (e) => {\r\n const newCoordinates = convertToString(formatTypeRef.current, [e.coordinate[0], e.coordinate[1]]);\r\n setCurrentPoint(e.coordinate);\r\n setCoordinates(newCoordinates);\r\n };\r\n\r\n const changeFormat = (attribute?: IMultiRowList) => {\r\n if (!attribute) {\r\n return;\r\n }\r\n\r\n const formatNameNew = attribute.labelRows[0].toString().replace(replacement, \"\").replace(replacement2, \"\");\r\n const formatTypeNew = attribute.value.toString();\r\n setFormatType(formatTypeNew);\r\n setFormatName(formatNameNew);\r\n setCoordinates(convertToString(formatTypeNew, currentPoint));\r\n };\r\n\r\n return (\r\n
\r\n changeFormat(at)}\r\n chevronClass={[\"esri-icon-up\", \"esri-icon-down\"]}\r\n onToggle={(isExpanded) => setExpanded(isExpanded)}\r\n />\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { DropdownType } from \"../enums\";\r\n\r\ninterface IDropdownList {\r\n selectedValue: string | number;\r\n attributes: number[] | IMultiRowList[] | ISingleRowList[];\r\n type: string;\r\n clicked: (attribute: IMultiRowList | ISingleRowList) => void;\r\n}\r\n\r\nexport interface IMultiRowList {\r\n labelRows: string[] | number[];\r\n value: string | number;\r\n}\r\n\r\nexport interface ISingleRowList {\r\n label: string | number;\r\n value: string | number;\r\n}\r\n\r\nexport const DropdownList = (props: IDropdownList): JSX.Element => {\r\n const SingleTypeList = () => (\r\n <>\r\n {(props.attributes as ISingleRowList[]).map((attribute, i) => (\r\n props.clicked(attribute)}\r\n key={attribute.value.toString() + Math.random() * i}\r\n >\r\n {attribute.value}\r\n \r\n ))}\r\n \r\n );\r\n\r\n const MultiTypeList = () => (\r\n <>\r\n {(props.attributes as IMultiRowList[]).map((attribute: IMultiRowList, i: number) =>\r\n attribute.labelRows ? (\r\n props.clicked(attribute)}\r\n className={classNames(\"listRow\", { active: attribute.value === props.selectedValue })}\r\n >\r\n {attribute.labelRows.map((row: string | number, i: number) => (\r\n {row}\r\n ))}\r\n \r\n ) : null\r\n )}\r\n \r\n );\r\n\r\n return (\r\n
\r\n {props.attributes && props.attributes.length ? (\r\n props.type === DropdownType.SingleLine ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null}\r\n
\r\n );\r\n};\r\n","import classnames from \"classnames\";\r\nimport i18next from \"i18next\";\r\nimport * as React from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./ShrinkCoordsButton.scss\";\r\n\r\nexport const ShrinkCoordsButton = (): JSX.Element => {\r\n const { coordsExpanded, setCoordsExpanded } = useMapContext();\r\n\r\n return (\r\n setCoordsExpanded(!coordsExpanded)}\r\n role=\"button\"\r\n title={i18next.t(\"coordinates.extendCoordinates\")}\r\n >\r\n \r\n  X°,Y°\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport i18next from \"i18next\";\r\n\r\nexport interface IDrawingButton {\r\n onClick: () => void;\r\n color: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const ColorButton = ({ onClick, disabled, color }: IDrawingButton): JSX.Element => (\r\n \r\n \r\n
\r\n);\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { GithubPicker } from \"react-color\";\r\nimport { config } from \"../config\";\r\nimport \"./Colors.scss\";\r\n\r\nexport const Colors = ({ onChange, disabled }: { onChange: (color: any) => void; disabled?: boolean }): JSX.Element => {\r\n const colors = config.default.colors || [\r\n \"#FF6900\",\r\n \"#FCB900\",\r\n \"#008744\",\r\n \"#00D084\",\r\n // \"#8ED1FC\",\r\n \"#0057e7\",\r\n \"#ABB8C3\",\r\n \"#333333\",\r\n \"#EB144C\",\r\n \"#F78DA7\",\r\n \"#9900EF\"\r\n ];\r\n\r\n const onColorChange = (color) => onChange(color);\r\n\r\n return (\r\n
\r\n \r\n {/* feature.set(\"COLOR\", color.hex)}\r\n onChangeComplete={(color) => console.log(\"color\", color.hex)}\r\n colors={colors}\r\n /> */}\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { Colors } from \"./Colors\";\r\nimport { DrawingToolbar } from \"./DrawingToolbar\";\r\nimport { DrawnItems } from \"./DrawnItems\";\r\n\r\nexport const Draw = (): JSX.Element => {\r\n const { drawType } = useMapContext();\r\n const { colorsVisible, setColor } = useDrawingContext();\r\n\r\n return (\r\n \r\n \r\n {colorsVisible ? setColor(color.hex)} disabled={!!drawType} /> : null}\r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { DrawType } from \"../enums\";\r\nimport { ColorButton } from \"./ColorButton\";\r\nimport { WidgetToolbar } from \"../Widget/WidgetToolbar\";\r\nimport { WidgetToolbarButton } from \"../Widget/WidgetToolbarButton\";\r\nimport \"./DrawingToolbar.scss\";\r\n\r\nexport const DrawingToolbar = (): JSX.Element => {\r\n const { drawType } = useMapContext();\r\n const { color, colorsVisible, setColorsVisible, onDrawStart } = useDrawingContext();\r\n\r\n const onColorClick = () => setColorsVisible(!colorsVisible);\r\n\r\n return (\r\n \r\n onDrawStart(DrawType.Point)}\r\n />\r\n onDrawStart(DrawType.Polyline)}\r\n />\r\n onDrawStart(DrawType.Polygon)}\r\n />\r\n onDrawStart(DrawType.PointText)}\r\n />\r\n \r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Import } from \"../Import/Import\";\r\nimport { Export } from \"../Export/Export\";\r\nimport { Draw } from \"./Draw\";\r\nimport { WmsAddition } from \"../WMS/WmsAddition\";\r\nimport { WmsContextProvider } from \"../../Contexts/WmsContext\";\r\nimport \"./DrawWidget.scss\";\r\n\r\nexport const DrawingWidget = (): JSX.Element => (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n);\r\n","import React from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { SketchProps } from \"./SketchProps\";\r\n\r\nexport const DrawnItems = (): JSX.Element => {\r\n const { drawnFeatures } = useMapContext();\r\n\r\n return (\r\n
\r\n
\r\n {drawnFeatures &&\r\n drawnFeatures.map((f) => )}\r\n
\r\n
\r\n );\r\n};\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport classNames from \"classnames\";\r\nimport { Feature } from \"ol\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { Colors } from \"./Colors\";\r\nimport { ColorButton } from \"./ColorButton\";\r\nimport { DrawType } from \"../enums\";\r\nimport { Point } from \"ol/geom\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./SketchProps.scss\";\r\n\r\nexport interface ISketchProps {\r\n feature: Feature;\r\n placeholder?: string;\r\n onBlur?: () => void;\r\n}\r\nexport const SketchProps = ({ feature, placeholder, onBlur }: ISketchProps): JSX.Element => {\r\n const { saveDrawnFeatures } = useMapContext();\r\n const { onNoteChange, onDeleteFeature, selectedFeature, setSelectedFeature, colorsVisible, setColorsVisible } =\r\n useDrawingContext();\r\n const [note, setNote] = useState(feature.get(\"DESCRIPTION\"));\r\n const [hideMeasurements, setHideMeasurements] = useState(feature.get(\"MEASUREMENTSHIDDEN\"));\r\n const [showColors, setShowColors] = useState(false);\r\n const [color, setColor] = useState(feature.get(\"COLOR\"));\r\n\r\n const inputRef = useRef();\r\n\r\n useEffect(() => {\r\n if (!inputRef.current) {\r\n return;\r\n }\r\n if (feature && selectedFeature && feature.get(\"TEMPID\") === selectedFeature.get(\"TEMPID\")) {\r\n setTimeout(() => {\r\n inputRef.current.focus();\r\n inputRef.current.select();\r\n }, 0);\r\n }\r\n }, [selectedFeature]);\r\n\r\n const onChange = (e) => {\r\n setNote(e.target.value);\r\n feature.set(\"DESCRIPTION\", e.target.value);\r\n onNoteChange();\r\n saveDrawnFeatures();\r\n };\r\n\r\n const onToggleMeasurement = () => {\r\n const newState = !feature.get(\"MEASUREMENTSHIDDEN\");\r\n feature.set(\"MEASUREMENTSHIDDEN\", newState);\r\n setHideMeasurements(newState);\r\n saveDrawnFeatures();\r\n };\r\n\r\n const onExpandColors = useCallback(() => {\r\n setShowColors(!showColors);\r\n // this is hack, to rerender accordion item, when color submenu visibility changed\r\n const newState =\r\n colorsVisible === true\r\n ? \"true\"\r\n : colorsVisible === \"true\"\r\n ? true\r\n : colorsVisible === false\r\n ? undefined\r\n : colorsVisible === undefined\r\n ? false\r\n : false;\r\n //@ts-ignore\r\n setColorsVisible(newState);\r\n }, [showColors, colorsVisible]);\r\n\r\n const onColorChange = (color: any) => {\r\n setColor(color.hex);\r\n feature.set(\"COLOR\", color.hex);\r\n saveDrawnFeatures();\r\n };\r\n\r\n const onKeyDown = (e) => {\r\n if (e.code === \"Enter\" || e.code === \"NumpadEnter\" || e.code === \"Escape\") {\r\n setSelectedFeature(null);\r\n inputRef.current && inputRef.current.blur();\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n
setSelectedFeature(feature)}>\r\n {feature.get(\"DRAWTYPE\") === DrawType.PointText ? (\r\n
\r\n ) => onChange(e)}\r\n onFocus={() => setSelectedFeature(feature)}\r\n value={note}\r\n onKeyDown={onKeyDown}\r\n />\r\n
\r\n ) : null}\r\n {feature.get(\"DRAWTYPE\") === DrawType.Point ? (\r\n
\r\n
LKS:
\r\n
{getCoordinates(feature)}
\r\n
\r\n ) : null}\r\n {feature.get(\"LENGTH\") ? (\r\n
\r\n
{i18next.t(\"sketch.length\") + \":\"}
\r\n {feature.get(\"LENGTH\")}\r\n
\r\n ) : null}\r\n {feature.get(\"AREA\") ? (\r\n
\r\n
{i18next.t(\"sketch.area\") + \":\"}
\r\n {feature.get(\"AREA\")}\r\n
\r\n ) : null}\r\n
\r\n
\r\n {feature.get(\"DRAWTYPE\") !== DrawType.Point ? (\r\n
onToggleMeasurement()}>\r\n \r\n
\r\n ) : null}\r\n
onDeleteFeature(feature)}>\r\n \r\n
\r\n \r\n
\r\n
\r\n {showColors ? : null}\r\n \r\n );\r\n};\r\n\r\nconst getCoordinates = (feature: Feature) => {\r\n const coordinates = (feature.getGeometry() as Point).getCoordinates();\r\n return Math.round(coordinates[0]) + \", \" + Math.round(coordinates[1]);\r\n};\r\n","import React, { ChangeEvent, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { WidgetToolbar } from \"../Widget/WidgetToolbar\";\r\nimport { WidgetInput } from \"../Widget/WidgetInput\";\r\nimport { Select } from \"../../Elements/Select\";\r\nimport { IFormat } from \"../../Contexts/PrintContext\";\r\nimport { PopupButton } from \"../../Elements/PopupButton\";\r\nimport { exportFeatures } from \"./exportFunctions\";\r\nimport \"./Export.scss\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\n\r\nconst fileFormat = [\r\n {\r\n label: \"Kml\",\r\n value: \"kml\"\r\n },\r\n {\r\n label: \"Kmz\",\r\n value: \"kmz\"\r\n },\r\n {\r\n label: \"Gpx\",\r\n value: \"gpx\"\r\n }\r\n];\r\n\r\nexport const Export = (): JSX.Element => {\r\n const { drawnFeatures } = useMapContext();\r\n const [title, setTitle] = useState(\"\");\r\n const [format, setFormat] = useState(fileFormat[0]);\r\n\r\n const onExport = useCallback(async () => {\r\n const blob = await exportFeatures(format, drawnFeatures, title || \"eksports\");\r\n\r\n const link = document.createElement(\"a\");\r\n link.href = URL.createObjectURL(blob);\r\n link.download = (title || \"eksports\") + \".\" + format.value;\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }, [title, format, drawnFeatures]);\r\n\r\n return (\r\n \r\n setTitle(e.target.value)}\r\n />\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst Format = ({ format, setFormat }: { format: IFormat; setFormat: CallableFunction }) => {\r\n const onClickGroup = (e: ChangeEvent) => {\r\n const groupValue = fileFormat.find((o) => o.label === e.target.value);\r\n setFormat(groupValue);\r\n };\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","import { Feature } from \"ol\";\r\nimport { GPX, KML } from \"ol/format\";\r\nimport { IFormat } from \"../../Contexts/PrintContext\";\r\nimport { blobToKmz } from \"../Import/zipUtils\";\r\nimport { LineString, Polygon } from \"ol/geom\";\r\n\r\nconst kmlFormat = new KML();\r\nconst gpxFormat = new GPX();\r\n\r\nexport const exportFeatures = async (format: IFormat, features: Feature[], fileName?: string): Promise => {\r\n return format.value === \"kml\"\r\n ? exportFeaturesAsKML(features)\r\n : format.value === \"gpx\"\r\n ? exportFeaturesAsGPX(features)\r\n : await exportFeaturesAsKMZ(features, fileName);\r\n};\r\n\r\nconst exportFeaturesAsKMZ = async (features, fileName) => {\r\n const kmlBlob = exportFeaturesAsKML(features);\r\n const zipBlob = await blobToKmz(kmlBlob, fileName);\r\n return zipBlob;\r\n};\r\n\r\nconst exportFeaturesAsKML = (features) => {\r\n try {\r\n const kmlString = kmlFormat.writeFeatures(features, {\r\n dataProjection: \"EPSG:4326\",\r\n featureProjection: \"EPSG:3059\"\r\n });\r\n\r\n return new Blob([kmlString], { type: \"application/vnd.google-earth.kml+xml\" });\r\n } catch (error) {}\r\n};\r\n\r\nconst exportFeaturesAsGPX = (features: Feature[]) => {\r\n // GPX supprts only point or line geometries.\r\n // Polygons can be exported as lines\r\n features.map((f) => {\r\n const geometry = f.getGeometry();\r\n (geometry.getType() === \"Polygon\" || geometry.getType() === \"MultiPolygon\") &&\r\n f.setGeometry(new LineString((geometry as Polygon).getLinearRing(0).getCoordinates()));\r\n });\r\n\r\n try {\r\n const gpxString = gpxFormat.writeFeatures(features, {\r\n dataProjection: \"EPSG:4326\",\r\n featureProjection: \"EPSG:3059\"\r\n });\r\n\r\n return new Blob([gpxString], { type: \"application/gpx+xml\" });\r\n } catch (error) {}\r\n};\r\n","import React, { FC, SyntheticEvent, useState } from \"react\";\r\nimport ImageGallery, { ReactImageGalleryItem } from \"react-image-gallery\";\r\nimport ErrorImage from \"../../img/error-img.svg\";\r\nimport \"./Gallery.scss\";\r\n\r\nexport interface GalleryImage {\r\n original: string;\r\n thumbnail: string;\r\n fullscreen?: string; // defaults to Original\r\n}\r\n\r\ninterface GalleryProps {\r\n images: GalleryImage[];\r\n}\r\n\r\nexport const Gallery: FC = (props) => {\r\n const [isFullscreen, setIsFullscreen] = useState(false);\r\n\r\n // workaround, to make fullscreen via css on iPhone, because fulscreenAPI is not working on iPhone\r\n const isIphone = navigator.userAgent.toLowerCase().indexOf(\"iphone\") > -1;\r\n\r\n const setFullscreen = (fullscreen: boolean) => {\r\n if (isIphone) {\r\n const galleryNode = document.getElementsByClassName(\"image-gallery\")[0];\r\n fullscreen ? galleryNode.classList.add(\"fullscreen-mode\") : galleryNode.classList.remove(\"fullscreen-mode\");\r\n }\r\n setIsFullscreen(fullscreen);\r\n };\r\n\r\n const handleImageError = (event: SyntheticEvent) => {\r\n event.currentTarget.src = ErrorImage;\r\n };\r\n\r\n const renderItem = (item: ReactImageGalleryItem) => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n setFullscreen(!!fullscreen)}\r\n useBrowserFullscreen={!isIphone}\r\n />\r\n );\r\n};\r\n","import axios from \"axios\";\r\nimport { IApiConfig, IImageConfig } from \"../config\";\r\nimport { ImageRole } from \"../enums\";\r\nimport { GalleryImage } from \"./Gallery\";\r\n\r\nexport interface GalleryImageWithId extends GalleryImage {\r\n id: string;\r\n}\r\n\r\nexport interface IImageProps {\r\n fileApiConfig: IApiConfig;\r\n imagesConfig: IImageConfig;\r\n objectId: string;\r\n}\r\n\r\ninterface IRelatedImage {\r\n fileName: string;\r\n storedFileName: string;\r\n title?: string;\r\n description?: string;\r\n}\r\n\r\nexport const getRelatedImagesData = async (imageProps: IImageProps): Promise => {\r\n const relatedImages = await getRelatedImages(imageProps);\r\n\r\n return (\r\n relatedImages?.length &&\r\n relatedImages.map(\r\n (image: IRelatedImage) =>\r\n ({\r\n id: Date.now() + \"_\" + image.storedFileName,\r\n original: getImageUrl(ImageRole.Original, image.storedFileName, imageProps),\r\n thumbnail: getImageUrl(ImageRole.Thumbnail, image.storedFileName, imageProps),\r\n fullscreen: getImageUrl(ImageRole.Fullscreen, image.storedFileName, imageProps),\r\n originalTitle: image.title,\r\n thumbnailLabel: image.title,\r\n thumbnailTitle: image.title,\r\n description: image.description\r\n } as GalleryImageWithId)\r\n )\r\n );\r\n};\r\n\r\nexport const getRelatedImages = (imageProps: IImageProps): Promise =>\r\n axios\r\n .get(imageProps.fileApiConfig.url + \"GetRelatedImages\", {\r\n params: {\r\n RelatedObjectId: imageProps.objectId,\r\n Layer: imageProps.imagesConfig.layerBrowseName,\r\n FileTable: imageProps.imagesConfig.fileTableName\r\n }\r\n })\r\n .then((resp) => {\r\n return resp.data;\r\n });\r\n\r\nconst getImageUrl = (imageSize: ImageRole, storedFileName: string, imageProps: IImageProps) => {\r\n const size = imageSize !== ImageRole.Fullscreen ? \"&thumbnail=true\" : \"\";\r\n const imageHeight = () => {\r\n if (!imageProps) {\r\n return \"\";\r\n }\r\n const details = imageProps.fileApiConfig.imageDetails;\r\n switch (imageSize) {\r\n case ImageRole.Thumbnail:\r\n return \"&height=\" + details.thumbnailHeight;\r\n case ImageRole.Original:\r\n return \"&height=\" + details.height;\r\n default:\r\n return \"\";\r\n }\r\n };\r\n\r\n return imageProps.fileApiConfig.url + \"GetImage?file=\" + storedFileName + size + imageHeight();\r\n};\r\n","import * as React from \"react\";\r\nimport { useRef, MutableRefObject, useEffect, useState } from \"react\";\r\nimport { useMapContext } from \"../Contexts/MapContext\";\r\nimport { Map } from \"ol\";\r\nimport { useMap } from \"./useMap\";\r\nimport { HelpPopup } from \"../Popups/HelpPopup\";\r\nimport { Toolbar } from \"./Toolbar/Toolbar\";\r\nimport { BaseMapWidget } from \"./Basemaps/BasemapWidget\";\r\nimport { BaseMapContextProvider } from \"../Contexts/BaseMapContext\";\r\nimport { CoordinateWidget } from \"./Coordinates/CoordinateWidget\";\r\nimport { ScaleWidget } from \"./Scale/ScaleWidget\";\r\nimport { BasemapTools } from \"./Basemaps/BasemapTools\";\r\nimport { ShrinkCoordsButton } from \"./Coordinates/ShrinkCoordsButton\";\r\nimport { Identify } from \"./Identify/Identify\";\r\nimport { SideLogo } from \"./Logos/SideLogo\";\r\nimport { SearchWidget } from \"./Search/SearchWidget\";\r\nimport { SearchContextProvider } from \"../Contexts/SearchContext\";\r\nimport { IdentifyContextProvider } from \"../Contexts/IdentifyContext\";\r\nimport { IdentifyPopup } from \"./Identify/IdentifyPopup\";\r\nimport { Widget } from \"./enums\";\r\nimport { TocWidget } from \"./Toc/TocWidget\";\r\nimport { LayersContextProvider } from \"../Contexts/LayersContext\";\r\nimport { WidgetPopup } from \"./Widget/WidgetPopup\";\r\nimport { PrintWidget } from \"./Print/PrintWidget\";\r\nimport { PrintContextProvider } from \"../Contexts/PrintContext\";\r\nimport { Info } from \"../Popups/Info/Info\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { DrawingContextProvider } from \"../Contexts/DrawingContext\";\r\nimport { DrawingWidget } from \"./Drawing/DrawingWidget\";\r\nimport { BookmarksWidget } from \"./Bookmarks/BookmarksWidget\";\r\nimport { ConvertWidget } from \"./Convert/ConvertWidget\";\r\nimport { ConvertContextProvider } from \"../Contexts/ConvertContext\";\r\nimport { Tooltip } from \"./Tooltip/Tooltip\";\r\nimport { UpperLogo } from \"./Logos/UpperLogo\";\r\nimport { HomeButton } from \"./Buttons/Home\";\r\nimport { GeoLocationButton } from \"./Buttons/GeoLocation\";\r\nimport { MapDownloadWidget } from \"./MapDownload/MapDownloadWidget\";\r\nimport { getUrlParam } from \"./utils\";\r\nimport { NewsPopup } from \"./News/NewsPopup\";\r\nimport \"./GeoLiteMap.scss\";\r\n\r\nlet mapRef: MutableRefObject;\r\n\r\nexport const GeoLiteMap = (): JSX.Element => {\r\n const [forceUpdate, setForceUpdate] = useState(0);\r\n\r\n const { info, setLanguage } = useAppContext();\r\n const { widget, drawingInfoVisible, configA, baseMap, coordsExpanded } = useMapContext();\r\n\r\n const ref = useRef();\r\n mapRef = useRef();\r\n mapRef.current = useMap(ref, { features: null, forceUpdate });\r\n\r\n useEffect(() => {\r\n if (!configA) {\r\n return;\r\n }\r\n console.log(\"config\", configA);\r\n document.title = configA.head.title;\r\n\r\n const defaultLanguage =\r\n /* localStorage.getItem(\"GeoLiteLanguage\") ||*/ getUrlParam(\"lang\") || configA?.language || \"LV\";\r\n setLanguage(defaultLanguage.toUpperCase());\r\n }, [configA]);\r\n\r\n const widgets = configA && configA.widgets;\r\n const isMultipleBasemaps = configA && configA.basemaps && configA.basemaps.length > 1;\r\n const isBasemapWidgetEnabled = widgets && (widgets.Basemaps || widgets.Basemaps === undefined);\r\n\r\n const hasLayersWidget = widgets && (widgets.LayerList || widgets.LayerList === undefined);\r\n const hasSearchWidget = widgets && (widgets.Search || widgets.Search === undefined);\r\n const hasDrawWidget = widgets && (widgets.Sketch || widgets.Sketch === undefined);\r\n const hasBookmarksWidget = widgets && (widgets.Bookmarks || widgets.Bookmarks === undefined);\r\n const hasConversionWidget = widgets && (widgets.CoordinateConversion || widgets.CoordinateConversion === undefined);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n\r\n {configA && mapRef.current ? (\r\n \r\n \r\n \r\n \r\n ) : null}\r\n\r\n \r\n\r\n {configA && baseMap && mapRef.current && isBasemapWidgetEnabled && isMultipleBasemaps ? (\r\n \r\n \r\n \r\n \r\n ) : null}\r\n\r\n {mapRef.current ? (\r\n \r\n \r\n {hasLayersWidget ||\r\n hasSearchWidget ||\r\n hasDrawWidget ||\r\n hasBookmarksWidget ||\r\n hasConversionWidget ? (\r\n \r\n {widget === Widget.Toc ? (\r\n \r\n ) : widget === Widget.Search ? (\r\n \r\n ) : widget === Widget.Print ? (\r\n \r\n \r\n \r\n ) : widget === Widget.Convert ? (\r\n \r\n \r\n \r\n ) : widget === Widget.Draw ? (\r\n \r\n \r\n \r\n ) : widget === Widget.Bookmarks ? (\r\n \r\n \r\n \r\n ) : widget === Widget.MapDownload ? (\r\n \r\n ) : null}\r\n \r\n ) : null}\r\n \r\n \r\n ) : null}\r\n\r\n {configA && mapRef.current ? : null}\r\n\r\n
\r\n
\r\n {mapRef.current ? (\r\n <>\r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {mapRef.current ? (\r\n <>\r\n \r\n\r\n {coordsExpanded ? (\r\n <>\r\n \r\n {\" \"}\r\n \r\n ) : null}\r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n\r\n {drawingInfoVisible ? : null}\r\n {info ? : null}\r\n {configA?.popup ? : null}\r\n \r\n );\r\n};\r\n\r\nexport const getMap = (): Map => mapRef.current;\r\n","import * as React from \"react\";\r\nimport \"./Attributes.scss\";\r\n\r\nexport interface Attribute {\r\n value: string;\r\n label: string;\r\n url?: string;\r\n target?: string;\r\n}\r\n\r\nexport enum AttributeType {\r\n Text = \"text\",\r\n Url = \"url\"\r\n}\r\n\r\ninterface AttributesProps {\r\n attributes: Attribute[];\r\n}\r\n\r\nexport const Attributes = (props: AttributesProps): JSX.Element => (\r\n
\r\n {props.attributes.map((attribute: Attribute, i: number) =>\r\n attribute.label ? (\r\n
\r\n
{attribute.label}
\r\n
{getValue(attribute)}
\r\n
\r\n ) : null\r\n )}\r\n
\r\n);\r\n\r\nconst getValue = (attribute) =>\r\n attribute.url ? (\r\n \r\n {attribute.value}\r\n \r\n ) : (\r\n attribute.value\r\n );\r\n","import React, { useEffect, useState } from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { TitleRow } from \"./TitleRow\";\r\nimport \"./ExpandablePanel.scss\";\r\n\r\nexport interface IExpandablePanelProps {\r\n title: string;\r\n count?: string;\r\n isCollapsed?: boolean;\r\n class?: string;\r\n notColapsable?: boolean;\r\n onExpand?: () => void;\r\n}\r\n\r\nexport const ExpandablePanel = (props: React.PropsWithChildren): JSX.Element => {\r\n const [isCollapsed, setIsCollapsed] = useState(props.isCollapsed);\r\n\r\n useEffect(() => {\r\n setIsCollapsed(props.isCollapsed);\r\n }, [props.isCollapsed]);\r\n\r\n useEffect(() => {\r\n !isCollapsed && props.onExpand?.();\r\n }, [isCollapsed]);\r\n\r\n function onClick() {\r\n setIsCollapsed(!isCollapsed);\r\n }\r\n\r\n return props.notColapsable ? (\r\n <>\r\n
\r\n \r\n
\r\n {props.children &&
{props.children}
}\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n
\r\n {props.count}\r\n
\r\n
\r\n
\r\n {props.children && (\r\n \r\n {props.children}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Gallery, GalleryImage } from \"../Gallery/Gallery\";\r\nimport { Attribute, Attributes } from \"./Attributes\";\r\n\r\ninterface FeatureInfoProps {\r\n attributes?: Attribute[];\r\n images?: GalleryImage[];\r\n}\r\n\r\nexport const FeatureInfo = (props: FeatureInfoProps): JSX.Element => {\r\n return (\r\n <>\r\n {props.images?.length ? : null}\r\n {props.attributes?.length ? : null}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport {\r\n getExcludeLayers,\r\n getIdentifyLayers,\r\n getIdentifyTolerance,\r\n getVisibleSubLayers,\r\n IdentifyResultsArray,\r\n identifyVectorLayers,\r\n sortIdentifyResults\r\n} from \"./identifyUtils\";\r\nimport { Layer } from \"ol/layer\";\r\nimport { Overlay } from \"ol\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { useMapDownloadContext } from \"../../Contexts/MapDownloadContext\";\r\nimport { identify } from \"../rest\";\r\nimport { useIdentifyContext } from \"../../Contexts/IdentifyContext\";\r\nimport { identifyWmsBasemap } from \"./identifyWmsBasemap\";\r\nimport { SheetSelectMode } from \"../enums\";\r\nimport { Polygon } from \"ol/geom\";\r\nimport \"./Identify.scss\";\r\n\r\nexport const Identify = (): JSX.Element => {\r\n const [identifiedFeatures, setIdentifiedFeatures] = useState();\r\n\r\n const { mapClick } = useAppContext();\r\n const { configA, layerStates, placingPin, identifyCoordinates, baseMap, setFeaturesPopup } = useMapContext();\r\n const { sheetSelectMode, setIdentifiedSheet, sheetSelectPolygon } = useMapDownloadContext();\r\n const { identifyResults, setResults, loading, setLoading, setCoordinates } = useIdentifyContext();\r\n\r\n const spinnerRef = useRef();\r\n\r\n useEffect(() => {\r\n spinnerRef.current = new Overlay({\r\n element: document.getElementById(\"identify-spinner\"),\r\n offset: [0, -6],\r\n positioning: \"bottom-center\"\r\n });\r\n getMap().addOverlay(spinnerRef.current);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!mapClick || placingPin) {\r\n return;\r\n }\r\n const coordinate = getMap().getEventCoordinate(mapClick.originalEvent);\r\n startIdentify(coordinate, mapClick.pixel);\r\n }, [mapClick]);\r\n\r\n useEffect(() => {\r\n if (identifiedFeatures) {\r\n const newResults: IdentifyResultsArray = identifyResults?.length\r\n ? [...identifyResults, ...identifiedFeatures]\r\n : [...identifiedFeatures];\r\n\r\n setResults(configA.identifyOrder ? sortIdentifyResults(newResults, configA.identifyOrder) : newResults);\r\n }\r\n }, [identifiedFeatures]);\r\n\r\n useEffect(() => {\r\n Array.isArray(identifiedFeatures) &&\r\n !identifiedFeatures.length &&\r\n !loading &&\r\n document.dispatchEvent(new Event(\"noIdentifyResults\"));\r\n }, [identifiedFeatures, loading]);\r\n\r\n useEffect(() => {\r\n identifyCoordinates &&\r\n identifyCoordinates.coordinates &&\r\n startIdentify(\r\n identifyCoordinates.coordinates,\r\n getMap().getPixelFromCoordinate(identifyCoordinates.coordinates)\r\n );\r\n }, [identifyCoordinates]);\r\n\r\n const startIdentify = (coordinate: number[], pixel: number[]) => {\r\n setIdentifiedFeatures(null);\r\n setResults(null);\r\n setLoading(true);\r\n setFeaturesPopup(null);\r\n setCoordinates(coordinate);\r\n spinnerRef.current.setPosition(coordinate);\r\n identifyOnMap(coordinate, pixel);\r\n };\r\n\r\n const identifyOnMap = useCallback(\r\n async (coordinates: number[], pixel: number[]) => {\r\n if (sheetSelectMode) {\r\n const mapLayer = getMap()\r\n .getLayers()\r\n .getArray()\r\n .find((l) => l.get(\"id\") === configA.geotelpa.searchLayerId);\r\n if (!mapLayer) {\r\n return;\r\n }\r\n\r\n if (sheetSelectMode === SheetSelectMode.Click) {\r\n const res = await identifyLayer(mapLayer as Layer, coordinates, true);\r\n res && res.length && setIdentifiedSheet([res[0][1][0].feature]);\r\n }\r\n\r\n if (sheetSelectMode === SheetSelectMode.Polygon && sheetSelectPolygon) {\r\n const res = await identifyLayerByPolygon(\r\n mapLayer as Layer,\r\n sheetSelectPolygon.getGeometry() as Polygon\r\n );\r\n const features = res && res.length && res[0][1] && res[0][1].map((r) => r.feature);\r\n features.length && setIdentifiedSheet(features);\r\n }\r\n\r\n setLoading(false);\r\n return;\r\n }\r\n const identifiedFeatures = identifyVectorLayers(getIdentifyLayers(configA, layerStates), pixel);\r\n identifiedFeatures && setIdentifiedFeatures(identifiedFeatures);\r\n\r\n await Promise.all(\r\n getIdentifyLayers(configA, layerStates).map(\r\n async (mapLayer: Layer) => await identifyLayer(mapLayer, coordinates)\r\n )\r\n );\r\n\r\n const identifiedWmsFeatures = await identifyWmsBasemap(configA, pixel, baseMap);\r\n identifiedWmsFeatures && setIdentifiedFeatures(identifiedWmsFeatures);\r\n\r\n setLoading(false);\r\n },\r\n [sheetSelectMode, sheetSelectPolygon, layerStates]\r\n );\r\n\r\n const identifyLayer = async (mapLayer: Layer, coords: number[], identifySheet?: boolean) => {\r\n const params = getParams(`{\"x\":${coords[0]}, \"y\":${coords[1]}}`);\r\n if (!params) {\r\n return;\r\n }\r\n\r\n if (!identifySheet) {\r\n params.tolerance = getIdentifyTolerance(configA.identifyTolerance);\r\n params.layers = getVisibleSubLayers(configA.layers, mapLayer, getExcludeLayers(mapLayer, configA.layers));\r\n }\r\n if (params.layers === \"visible:\") {\r\n return;\r\n }\r\n\r\n const layerConfig = configA.layers.find((config) => config.id === mapLayer.get(\"id\"));\r\n\r\n const result = await identify(\r\n configA.endpoints[layerConfig.endpoint.endpoint] + layerConfig.endpoint.url,\r\n params,\r\n layerConfig.id\r\n );\r\n !identifySheet && setIdentifiedFeatures(result);\r\n return result;\r\n };\r\n\r\n const identifyLayerByPolygon = async (mapLayer: Layer, geometry: Polygon) => {\r\n if (!geometry) {\r\n return;\r\n }\r\n\r\n const rings = JSON.stringify(geometry.getCoordinates());\r\n const params = getParams(`{\"rings\":${rings}}`);\r\n if (!params) {\r\n return;\r\n }\r\n\r\n params.geometryType = \"esriGeometryPolygon\";\r\n\r\n const layerConfig = configA.layers.find((config) => config.id === mapLayer.get(\"id\"));\r\n\r\n const result = await identify(\r\n configA.endpoints[layerConfig.endpoint.endpoint] + layerConfig.endpoint.url,\r\n params,\r\n layerConfig.id\r\n );\r\n\r\n return result;\r\n };\r\n\r\n return (\r\n
\r\n {loading ? (\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst getParams = (geometry: string): any => {\r\n const map = getMap();\r\n if (!map) {\r\n return;\r\n }\r\n const mapSize = map.getSize();\r\n const extent = map.getView().calculateExtent(mapSize);\r\n if (!mapSize || !extent) {\r\n return;\r\n }\r\n\r\n const params = {\r\n f: \"json\",\r\n imageDisplay: mapSize.toString() + \",96\",\r\n geometry,\r\n geometryType: \"esriGeometryPoint\",\r\n sr: \"3059\",\r\n tolerance: 2,\r\n mapExtent: extent.toString(),\r\n returnGeometry: true,\r\n returnFieldName: false,\r\n returnUnformattedValues: false,\r\n layers: \"all\"\r\n };\r\n\r\n return params;\r\n};\r\n","import * as React from \"react\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { Overlay } from \"ol\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { Popup, PopupHeader, PopupBody, PopupFooter } from \"../../Popups/Popup\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { PopupHeaderButton } from \"../../Popups/PopupHeaderButton\";\r\nimport i18next from \"i18next\";\r\nimport { useIdentifyContext } from \"../../Contexts/IdentifyContext\";\r\nimport { IdentifyResults } from \"./IdentifyResults\";\r\nimport { IdentifyResultsArray } from \"./identifyUtils\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./Identify.scss\";\r\n\r\nexport const IdentifyPopup = (): JSX.Element => {\r\n const { highlightFeatures, setHighlightFeatures, setLocateFeature, setShowToast, isMobile } = useAppContext();\r\n const { featuresPopup, setFeaturesPopup } = useMapContext();\r\n const { identifyResults, setResults, coordinates, coordinatesString } = useIdentifyContext();\r\n const [dragged, setDragged] = useState(false);\r\n\r\n const isIFrame = iniFrame();\r\n\r\n const overlayRef = useRef();\r\n\r\n useEffect(() => {\r\n if (isIFrame || isMobile) {\r\n return;\r\n }\r\n overlayRef.current = new Overlay({\r\n element: document.getElementById(\"identify\"),\r\n offset: [0, -35],\r\n positioning: \"bottom-center\",\r\n className: \"popup-overlay\"\r\n });\r\n getMap().addOverlay(overlayRef.current);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!isIFrame && !isMobile && identifyResults && coordinates && identifyResults.length) {\r\n overlayRef.current.setPosition(coordinates);\r\n overlayRef.current.panIntoView({ animation: { duration: 250 } });\r\n }\r\n highlightResult(identifyResults);\r\n setDragged(false);\r\n }, [identifyResults, featuresPopup]);\r\n\r\n const highlightResult = useCallback(\r\n (results: IdentifyResultsArray) => {\r\n results && results.length && results[0][1][0].feature && !featuresPopup?.hideHighLight\r\n ? setHighlightFeatures([results[0][1][0].feature])\r\n : setHighlightFeatures(null);\r\n },\r\n [featuresPopup]\r\n );\r\n\r\n const onClose = () => {\r\n setResults(null);\r\n setHighlightFeatures(null);\r\n setFeaturesPopup(null);\r\n };\r\n\r\n const onDrag = () => setDragged(true);\r\n\r\n const onCopy = useCallback(\r\n (params) => {\r\n if (!params || !params.position || !params.position.length) {\r\n return;\r\n }\r\n navigator.clipboard.writeText(coordinatesString);\r\n setShowToast({\r\n position: [params.position[0] - params.contentWidth / 2 - 24, params.position[1] - 60],\r\n title: i18next.t(\"coordinateConversion.copySuccess\"),\r\n text: coordinatesString\r\n });\r\n },\r\n [coordinatesString]\r\n );\r\n\r\n const onZoom = useCallback(() => {\r\n highlightFeatures.features &&\r\n highlightFeatures.features[0].getGeometry() &&\r\n setLocateFeature(highlightFeatures.features[0]);\r\n }, [highlightFeatures]);\r\n\r\n return (\r\n
\r\n {identifyResults && identifyResults.length ? (\r\n <>\r\n \r\n {/* TODO fix mobile version to use actual iMobile parameter */}\r\n {/* Draggable component blocks Click events on mobile, on drag handler element (header)\r\n and as result, Close and Zoom buttons does not work */}\r\n {isMobile ? (\r\n <>\r\n \r\n\r\n \r\n \r\n ) : null}\r\n \r\n {!isMobile ? (\r\n <>\r\n \r\n\r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n
{coordinatesString}
\r\n
\r\n \r\n
\r\n
\r\n {!isIFrame && !dragged && !featuresPopup?.hideArrow ? (\r\n
\r\n ) : null}\r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst iniFrame = () => {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n};\r\n","import * as React from \"react\";\r\nimport { ResultFeatureInfo } from \"./ResultFeatureInfo\";\r\nimport { ExpandablePanel } from \"./ExpandablePanel\";\r\nimport { useState } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { IdentifyResult, IdentifyResultsArray } from \"./identifyUtils\";\r\nimport \"./Identify.scss\";\r\n\r\nexport const IdentifyResults = ({ results }: { results: IdentifyResultsArray }): JSX.Element => {\r\n const { setHighlightFeatures } = useAppContext();\r\n const { configA } = useMapContext();\r\n const [expandedGroups, setExpandedGroups] = useState([0]);\r\n const hasMultipleResults = results.length > 1 || results[0][1].length > 1;\r\n\r\n const onExpand = React.useCallback(\r\n (i: number, res: IdentifyResult) => {\r\n if (configA.identifyMultiExpand) {\r\n const newExpandedGroups = [...expandedGroups];\r\n newExpandedGroups.includes(i)\r\n ? newExpandedGroups.filter((exp) => exp === i)\r\n : newExpandedGroups.push(i);\r\n setExpandedGroups(newExpandedGroups);\r\n } else {\r\n setExpandedGroups([i]);\r\n }\r\n\r\n setHighlightFeatures([res.feature]);\r\n },\r\n [expandedGroups]\r\n );\r\n\r\n return (\r\n <>\r\n {hasMultipleResults ? (\r\n results.map((res, i) => (\r\n onExpand(i, res[1][0])}\r\n >\r\n {res[1].map((r, i) => (\r\n \r\n ))}\r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { Attribute } from \"./Attributes\";\r\nimport { FeatureInfo } from \"./FeatureInfo\";\r\nimport { getRelatedImagesData, GalleryImageWithId } from \"../Gallery/imageProvider\";\r\nimport { Feature } from \"ol\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { IdentifyResult, isFeatureValid, replaceWithValue } from \"./identifyUtils\";\r\nimport \"./ResultFeatureInfo.scss\";\r\n\r\ninterface ResultFeatureInfoProps {\r\n identified: IdentifyResult;\r\n}\r\n\r\nexport const ResultFeatureInfo = ({ identified }: ResultFeatureInfoProps): JSX.Element => {\r\n const [images, setImages] = useState([]);\r\n const { highlightFeatures, setHighlightFeatures } = useAppContext();\r\n const { configA } = useMapContext();\r\n\r\n const identifyIgnoreFields: string[] = configA.identifyIgnoreFields.map((f: string) => f.toLowerCase()) || [];\r\n\r\n const curLayer = configA.layers.find((conf) => conf.id === identified.mapLayerId);\r\n\r\n const onSelect = () => setHighlightFeatures([identified.feature]);\r\n\r\n useEffect(() => {\r\n if (!identified.feature || !configA.apiConfig || !curLayer || !curLayer.imageConfig) {\r\n return;\r\n }\r\n\r\n getRelatedImagesData(getImageProps(identified, configA.apiConfig, curLayer.imageConfig)).then(\r\n (imagesData: GalleryImageWithId[]) => imagesData && imagesData.length && setImages(imagesData),\r\n () => console.log(\"Objektam nav attēlu\")\r\n );\r\n }, [identified.feature]);\r\n\r\n const selected =\r\n highlightFeatures &&\r\n highlightFeatures.features &&\r\n highlightFeatures.features.find((hl) => hl.get(\"OBJECTID\") === identified.feature.get(\"OBJECTID\"));\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface ILink {\r\n attribute: string;\r\n link: string;\r\n target?: string;\r\n text?: string;\r\n}\r\n\r\nconst getFeatureAttributes = (\r\n layerId: number,\r\n feature: Feature,\r\n identifyIgnoreFields: string[],\r\n customFields?: any\r\n): Attribute[] => {\r\n let excludeFields = [];\r\n let linkFields = [] as ILink[];\r\n if (customFields && customFields[layerId]) {\r\n if (customFields[layerId].ignoreFields) {\r\n excludeFields = customFields[layerId].ignoreFields;\r\n }\r\n if (customFields[layerId].url) {\r\n linkFields = customFields[layerId].url;\r\n }\r\n }\r\n const exclude = identifyIgnoreFields.concat(excludeFields);\r\n const featureList = {};\r\n const attributeArray: Attribute[] = [];\r\n let attributes = feature.getProperties();\r\n Object.entries(attributes).forEach(([key, value]) => {\r\n const isLinkField = linkFields && linkFields.length && linkFields.find((l) => l.attribute === key);\r\n if (isFeatureValid(attributes, exclude, key, !!isLinkField)) {\r\n if (key.includes(\":\")) {\r\n const newAttribute = key.replace(\":\", \"\");\r\n delete Object.assign(featureList, attributes, {\r\n [newAttribute]: attributes[key]\r\n })[key];\r\n key = newAttribute;\r\n }\r\n const thisValue = { label: key, value: value as string } as Attribute;\r\n\r\n if (linkFields && linkFields.length > 0) {\r\n for (const link of linkFields) {\r\n if (link.attribute === key) {\r\n thisValue.target = link.target ? link.target : \"_new\";\r\n const label = link.link === \"{0}\" ? (value as string) : replaceWithValue(feature, link.link);\r\n thisValue.url = label;\r\n link.text && (thisValue.value = link.text);\r\n }\r\n }\r\n }\r\n attributeArray.push(thisValue);\r\n }\r\n });\r\n if (!isEmpty(featureList)) {\r\n attributes = featureList;\r\n }\r\n\r\n return attributeArray;\r\n};\r\n\r\nfunction isEmpty(obj: any) {\r\n for (const key in obj) {\r\n if ({}.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nconst getImageProps = (res, apiConfig, imageConfig) => {\r\n const imagesConfig = imageConfig.find((curConfig) => curConfig.id === res.layerId);\r\n if (!imagesConfig || !imagesConfig.apiProviderId) {\r\n return;\r\n }\r\n\r\n const fileApiConfig = apiConfig.find((api) => api.id === imagesConfig.apiProviderId);\r\n\r\n return (\r\n imagesConfig &&\r\n fileApiConfig && {\r\n objectId: res.feature.get(\"OBJECTID\"),\r\n fileApiConfig: fileApiConfig,\r\n imagesConfig: imagesConfig\r\n }\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport \"./TitleRow.scss\";\r\n\r\nexport interface ITitleRowProps {\r\n title: string;\r\n subtitle?: string;\r\n class?: string;\r\n onClick?: (e: React.MouseEvent) => void;\r\n}\r\n\r\nexport const TitleRow = (props: React.PropsWithChildren): JSX.Element => {\r\n const onClick = (e: React.MouseEvent) => {\r\n props.onClick?.(e);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{props.title}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import { ILayerState } from \"../config\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { IIdentifyOrder, IIdentifyTolerance } from \"../IUserConfig\";\r\nimport { isMobile } from \"../Toc/helpers\";\r\nimport { Layer, Tile as TileLayer, Image as ImageLayer } from \"ol/layer\";\r\nimport { decodeFeatureFields } from \"../utils\";\r\nimport { Vector as VectorLayer } from \"ol/layer\";\r\nimport BaseLayer from \"ol/layer/Base\";\r\nimport { Feature } from \"ol\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport { Pixel } from \"ol/pixel\";\r\n\r\nexport type IdentifyResultsArray = [string, IdentifyResult[]][];\r\n\r\nexport interface IdentifyResult {\r\n mapLayerId: string;\r\n layerId: number;\r\n layerName: string;\r\n feature: Feature;\r\n}\r\n\r\nexport const getIdentifyLayers = (config, layerStates: ILayerState[]) =>\r\n getMap()\r\n .getLayers()\r\n .getArray()\r\n .filter((layer: Layer) => {\r\n const existsInConfig = config.layers.find((layerConfig) => {\r\n const isLayerVisible = layerStates.find((state) => {\r\n if (state.type === \"LayerGroup\" && state.sublayers.length) {\r\n return state.sublayers.find((subLayer) => subLayer.layerId === layerConfig.id && state.visible);\r\n }\r\n return state.layerId === layerConfig.id && state.visible;\r\n });\r\n return isLayerVisible && layer.get(\"id\") === layerConfig.id;\r\n });\r\n // return layer.type !== \"graphics\" && existsInConfig;\r\n return existsInConfig;\r\n });\r\n\r\nexport const getVisibleSubLayers = (layersConfig, mapLayer, excludes): string => {\r\n let allowedLayers: number[] = [];\r\n let layerIds = [];\r\n\r\n if (mapLayer instanceof TileLayer) {\r\n return \"all\";\r\n }\r\n\r\n if (mapLayer instanceof ImageLayer) {\r\n const visibleSubLayers = mapLayer\r\n .getSource()\r\n .getParams()\r\n .LAYERS.replace(\"show:\", \"\")\r\n .split(\",\")\r\n .map((nr) => Number(nr));\r\n\r\n if (mapLayer.get(\"layers\")) {\r\n allowedLayers = getSubLayers(mapLayer.get(\"layers\"), allowedLayers, visibleSubLayers);\r\n }\r\n\r\n const layerConfig = layersConfig.find((element) => element.id === mapLayer.get(\"id\"));\r\n if (layerConfig && layerConfig.identify && \"rest\" in layerConfig.identify) {\r\n allowedLayers = Object.keys(layerConfig.identify)\r\n .filter((key) => key !== \"rest\")\r\n .map((key) => parseInt(key));\r\n }\r\n\r\n if (!layerConfig || (layerConfig && layerConfig.identify === null)) {\r\n return;\r\n }\r\n\r\n layerIds = allowedLayers;\r\n\r\n if (Array.isArray(excludes)) {\r\n layerIds = layerIds.filter((x: number) => !excludes.includes(x));\r\n }\r\n if (layerIds.length === 0 && allowedLayers.length > 0) {\r\n return;\r\n }\r\n\r\n return \"visible:\" + layerIds.filter((id) => visibleSubLayers.includes(id)).join(\",\");\r\n }\r\n};\r\n\r\nconst getSubLayers = (layers, layerIds: number[], visibleSubLayers: number[]) => {\r\n let allowedLayers = layerIds;\r\n layers.map((layer) => {\r\n layer.sublayers?.length\r\n ? (allowedLayers = getSubLayers(layer.sublayers, allowedLayers, visibleSubLayers))\r\n : visibleSubLayers.includes(layer.id) && allowedLayers.push(layer.id);\r\n });\r\n return allowedLayers;\r\n};\r\n\r\nexport const getExcludeLayers = (layer, layers) => {\r\n const curLayer = layers.filter((element) => element.id === layer.id);\r\n if (curLayer.length > 0) {\r\n const firstLayer = curLayer[0];\r\n\r\n if (typeof firstLayer.identify === \"undefined\") {\r\n return \"undefined\";\r\n }\r\n if (!firstLayer.identify) {\r\n return false;\r\n }\r\n\r\n const excludeArray: number[] = [];\r\n for (const exclude in firstLayer.identify) {\r\n if (!firstLayer.identify[exclude]) {\r\n excludeArray.push(Number(exclude));\r\n }\r\n }\r\n return excludeArray;\r\n }\r\n return \"undefined\";\r\n};\r\n\r\nexport const getIdentifyTolerance = (identifyTolerance?: IIdentifyTolerance): number => {\r\n const defaultMobileIdentifyTolerance = 10;\r\n const defaultDesktopIdentifyTolerance = 5;\r\n const mobileTolerance = identifyTolerance ? identifyTolerance.mobile : defaultMobileIdentifyTolerance;\r\n const desktopTolerance = identifyTolerance ? identifyTolerance.desktop : defaultDesktopIdentifyTolerance;\r\n\r\n return isMobile() ? mobileTolerance : desktopTolerance;\r\n};\r\n\r\nexport const isFeatureValid = (attributes, exclude: string[], attribute: string, isLinkField: boolean): boolean =>\r\n !!{}.hasOwnProperty.call(attributes, attribute) &&\r\n attributeNotIncludedIn(exclude, attribute) &&\r\n attribute !== \"geometry\" &&\r\n attributes[attribute] &&\r\n // (isLinkField || attributes[attribute] !== \"Null\");\r\n attributes[attribute] !== \"Null\";\r\n\r\nexport const attributeNotIncludedIn = (exclude: string[], attribute: string): boolean =>\r\n !(\r\n exclude.includes(attribute) ||\r\n exclude.includes(attribute.toUpperCase()) ||\r\n exclude.includes(attribute.toLowerCase())\r\n );\r\n\r\nexport const identifyVectorLayers = (mapLayers: BaseLayer[], pixel: Pixel): IdentifyResultsArray => {\r\n const identifiedResults = mapLayers\r\n .map(\r\n (layer: BaseLayer) =>\r\n layer instanceof VectorLayer && layer.get(\"identify\") && identifyFeaturesAtPixel(layer, pixel)\r\n )\r\n .filter((res) => res);\r\n if (!identifiedResults) {\r\n return;\r\n }\r\n const resultArray: IdentifyResultsArray = [];\r\n identifiedResults.flat().map((res) => !resultArray.some((ra) => ra[0] === res[0]) && resultArray.push(res));\r\n\r\n return resultArray;\r\n};\r\n\r\nexport const identifyFeaturesAtPixel = (mapLayer: VectorLayer, pixel: Pixel): IdentifyResultsArray => {\r\n const layerId = mapLayer.get(\"id\");\r\n const pixelFeatures = getMap().getFeaturesAtPixel(pixel, {\r\n layerFilter: (layer) => layer.get(\"id\") === layerId\r\n }) as Feature[];\r\n\r\n if (!pixelFeatures?.length) {\r\n return;\r\n }\r\n const resultArray: IdentifyResultsArray = [];\r\n const results = pixelFeatures[0].get(\"features\")\r\n ? identifyClusterFeatures(pixelFeatures[0].get(\"features\"), resultArray)\r\n : identifyFeatures(mapLayer, pixel);\r\n\r\n return results?.length && results;\r\n};\r\n\r\nexport const identifyClusterFeatures = (\r\n features: Feature[],\r\n resultArray?: IdentifyResultsArray\r\n): IdentifyResultsArray => {\r\n const results: IdentifyResultsArray = resultArray || [];\r\n features.map((f) => {\r\n const layerId = f.get(\"layerData\").id;\r\n const fieldInfo = getMap()\r\n .getLayers()\r\n .getArray()\r\n .find((ml) => ml.get(\"id\") === layerId)\r\n ?.get(\"fieldInfo\");\r\n pushResult(f.get(\"layerData\").identify, layerId, f, fieldInfo, results);\r\n });\r\n return results.length && results;\r\n};\r\n\r\nexport const identifyFeatures = (mapLayer: VectorLayer, pixel: Pixel): IdentifyResultsArray => {\r\n const layerId = mapLayer.get(\"id\");\r\n const results: IdentifyResultsArray = [];\r\n getMap().forEachFeatureAtPixel(\r\n pixel,\r\n (featureLike, layer) => {\r\n const clusterFeature = featureLike.get(\"features\");\r\n const identFeature = clusterFeature ? clusterFeature[0] : featureLike;\r\n pushResult(layer.get(\"identify\"), layerId, identFeature, layer.get(\"fieldInfo\"), results);\r\n },\r\n {\r\n layerFilter: (layer) => layer.get(\"id\") === layerId\r\n }\r\n );\r\n return results.length && results;\r\n};\r\n\r\nconst pushResult = (identifyConfig, layerId, identFeature, fieldInfo, results) => {\r\n const layerName = identifyConfig[layerId]?.layerName;\r\n if (!layerName) {\r\n return;\r\n }\r\n\r\n const feature = decodeFeatureFields(identFeature as Feature, fieldInfo);\r\n\r\n let layerElement = results.find((resEl) => resEl[0] === layerName);\r\n if (!layerElement) {\r\n layerElement = [layerName, []];\r\n results.push(layerElement);\r\n }\r\n\r\n layerElement[1].push({\r\n mapLayerId: layerId,\r\n layerId,\r\n layerName,\r\n feature\r\n } as IdentifyResult);\r\n};\r\n\r\nexport const sortIdentifyResults = (results: IdentifyResultsArray, order: IIdentifyOrder[]): IdentifyResultsArray => {\r\n const sorted = results.sort((a, b) => {\r\n const serviceIndexA = indexOfService(order, a[1][0].mapLayerId);\r\n const serviceIndexB = indexOfService(order, b[1][0].mapLayerId);\r\n\r\n return serviceIndexA === -1\r\n ? 1\r\n : serviceIndexB === -1\r\n ? -1\r\n : serviceIndexA < serviceIndexB\r\n ? -1\r\n : serviceIndexA > serviceIndexB\r\n ? 1\r\n : serviceIndexA === serviceIndexB\r\n ? sortByLayerIds(order, a, b)\r\n : 0;\r\n });\r\n\r\n return sorted;\r\n};\r\n\r\nconst sortByLayerIds = (order: IIdentifyOrder[], a, b): number => {\r\n const layerOrder = order.find((ord) => ord.serviceId.toLowerCase() === a[1][0].mapLayerId.toLowerCase())?.layerIds;\r\n if (!layerOrder || !layerOrder.length) {\r\n return 0;\r\n }\r\n\r\n const layerIndexA = layerOrder.indexOf(a[1][0].layerId);\r\n const layerIndexB = layerOrder.indexOf(b[1][0].layerId);\r\n\r\n return layerIndexA === -1\r\n ? 1\r\n : layerIndexB === -1\r\n ? -1\r\n : layerIndexA < layerIndexB\r\n ? -1\r\n : layerIndexA > layerIndexB\r\n ? 1\r\n : 0;\r\n};\r\n\r\nconst indexOfService = (order: IIdentifyOrder[], value: string) => {\r\n for (let i = 0; i < order.length; i++) {\r\n if (order[i].serviceId.toLowerCase() === value.toLowerCase()) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nexport const replaceWithValue = (feature: Feature, text?: string): string => {\r\n if (!text) {\r\n return;\r\n }\r\n const replacedWithValues = text.replace(/[^{}]+(?=})/g, (matched: string) => feature.get(matched) || matched);\r\n\r\n return replacedWithValues\r\n .replace(/{undefined}/g, \"\")\r\n .replace(/{null}/g, \"\")\r\n .replace(/[{}]/g, \"\");\r\n};\r\n","import axios from \"axios\";\r\nimport { Feature } from \"ol\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { IdentifyResultsArray } from \"./identifyUtils\";\r\n\r\nexport const identifyWmsBasemap = (config, pixel: number[], baseMap: string): Promise => {\r\n const layerConfig = config.basemaps.find((conf) => conf.id === baseMap);\r\n const wmsBasemapConfig = layerConfig && layerConfig.layers[0].type === \"WMS\" && layerConfig.layers[0].identify;\r\n if (!wmsBasemapConfig) {\r\n return;\r\n }\r\n\r\n return identifyWms(layerConfig, pixel);\r\n};\r\n\r\nconst identifyWms = (layerConfig, pixel): Promise =>\r\n axios\r\n .get(layerConfig.url, { params: getWmsParams(layerConfig, pixel) })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n return parseWmsResult(response.data.features, layerConfig);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return null;\r\n });\r\n\r\nconst parseWmsResult = (features: any[], layerConfig): IdentifyResultsArray => {\r\n const feature = new Feature();\r\n feature.setProperties(getWmsFeatureAttributes(features[0].properties, layerConfig.layers[0].identify));\r\n\r\n return [\r\n [\r\n layerConfig.layers[0].identify.name,\r\n [\r\n {\r\n mapLayerId: layerConfig.id,\r\n layerId: layerConfig.id,\r\n layerName: layerConfig.layers[0].identify.name,\r\n feature\r\n }\r\n ]\r\n ]\r\n ];\r\n};\r\n\r\nconst getWmsParams = (layerConfig, pixel) => {\r\n const map = getMap();\r\n const bb = map.getView().calculateExtent(map.getSize());\r\n const box = bb[0] + \",\" + bb[1] + \",\" + bb[2] + \",\" + bb[3];\r\n const size = map.getSize();\r\n\r\n return {\r\n SERVICE: \"WMS\",\r\n request: \"GetFeatureInfo\",\r\n QUERY_LAYERS: layerConfig.layers[0].identify.layer,\r\n LAYERS: layerConfig.layers[0].identify.layer,\r\n INFO_FORMAT: \"application/json\",\r\n VERSION: \"1.1.0\",\r\n SRS: \"EPSG:\" + (layerConfig.spatialReference || 3059),\r\n BBOX: box,\r\n X: Math.round(pixel[0]),\r\n Y: Math.round(pixel[1]),\r\n WIDTH: size[0],\r\n HEIGHT: size[1]\r\n };\r\n};\r\n\r\nconst getWmsFeatureAttributes = (properties: { [name: string]: any }, config: any) => {\r\n const attributes = {};\r\n Object.keys(properties).map((key) => {\r\n config.fields[key] &&\r\n (attributes[config.fields[key].alias] = Object.prototype.hasOwnProperty.call(config.fields, key)\r\n ? config.fields[key].displayFormat.replace(\"{value}\", Number.parseFloat(properties[key]).toFixed(2))\r\n : properties[key]);\r\n });\r\n\r\n return attributes;\r\n};\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { getDrawingLayer, zoomToExtent } from \"../mapFunctions\";\r\nimport { Feature } from \"ol\";\r\nimport { DrawType } from \"../enums\";\r\nimport { formatArea, formatLength } from \"../Symbols/measureSymbols\";\r\nimport { unzipFile } from \"./zipUtils\";\r\nimport { getGpxFeatures } from \"./gpx\";\r\nimport { extractStylesFromKML, getColorFromKmlStyles, getKmlFeatures } from \"./kml\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { extend, Extent, buffer } from \"ol/extent\";\r\nimport \"./Import.scss\";\r\n\r\nconst acceptTypes = [\r\n \"application/vnd.google-earth.kml+xml\",\r\n \"application/vnd.google-earth.kmz\",\r\n \"application/gpx+xml\",\r\n \".gpx\",\r\n \".kml\",\r\n \".kmz\"\r\n];\r\nconst allowedTypes = new Set(acceptTypes);\r\n\r\nexport const Import = (): JSX.Element => {\r\n const { drawnFeatures, setDrawnFeatures, openDrawnFeatures } = useMapContext();\r\n const [uploadList, setUploadList] = useState();\r\n const inputRef = useRef();\r\n\r\n useEffect(() => {\r\n uploadList && uploadList[0] && readFile(uploadList[0]);\r\n }, [uploadList]);\r\n\r\n const readFile = async (inputFile: File) => {\r\n const featureArray: Feature[] = [];\r\n const nameParts = inputFile.name.split(\".\");\r\n let extension = nameParts[nameParts.length - 1];\r\n\r\n let file;\r\n if (extension === \"kmz\") {\r\n file = await unzipFile(inputFile).then((unzippedFiles) => unzippedFiles && unzippedFiles[0]);\r\n extension = \"kml\";\r\n } else {\r\n file = inputFile;\r\n }\r\n const reader = new FileReader();\r\n reader.readAsText(file);\r\n reader.onload = (e) => onFileLoaded(e, featureArray, extension);\r\n reader.onloadend = () => {\r\n const drawn = [...drawnFeatures, ...featureArray];\r\n setDrawnFeatures(drawn);\r\n getDrawingLayer().getSource().addFeatures(drawn);\r\n zoomToExtent(\r\n featureArray.reduce(\r\n (result, feature) => (result === null ? getBuffer(feature) : extend(result, getBuffer(feature))),\r\n null\r\n ),\r\n () => {\r\n setUploadList(null);\r\n openDrawnFeatures();\r\n }\r\n );\r\n };\r\n };\r\n\r\n const onFileLoaded = async (event: ProgressEvent, featureArray: Feature[], extension: string) => {\r\n const features =\r\n extension === \"kml\"\r\n ? getKmlFeatures(event.target.result)\r\n : extension === \"gpx\"\r\n ? getGpxFeatures(event.target.result)\r\n : [];\r\n\r\n const styles = extension === \"kml\" && extractStylesFromKML(event.target.result);\r\n\r\n features.map((f) => addProperties(f, styles));\r\n featureArray.push(...features);\r\n };\r\n\r\n const onAdd = (e) => {\r\n const selectedFiles: FileList = e.target.files;\r\n if (!selectedFiles.length || !inputRef.current) {\r\n return;\r\n }\r\n\r\n const dt = new DataTransfer();\r\n\r\n const addFile = (file: File) => {\r\n if (!file.type) {\r\n dt.items.add(addFileType(file));\r\n return;\r\n }\r\n if (!allowedTypes.has(file.type)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n dt.items.add(file);\r\n };\r\n\r\n if (uploadList && uploadList.length) {\r\n Array.from(uploadList).map((file) => {\r\n addFile(file);\r\n });\r\n }\r\n\r\n Array.from(selectedFiles).map((file) => addFile(file));\r\n\r\n onChangeList(dt.files);\r\n };\r\n\r\n const onChangeList = (list: FileList) => {\r\n (inputRef.current as HTMLInputElement).files = list;\r\n setUploadList(list);\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst addProperties = (feature: Feature, styles) => {\r\n const oid = Math.random() * 1234567;\r\n const drawType = feature.get(\"DRAWTYPE\") || getDrawType(feature);\r\n const properties = {\r\n TEMPID: oid,\r\n DESCRIPTION: feature.get(\"DESCRIPTION\") || getDescription(feature),\r\n DRAWTYPE: drawType,\r\n MEASUREMENTSHIDDEN: feature.get(\"MEASUREMENTSHIDDEN\") === \"true\",\r\n COLOR: getColorFromKmlStyles(feature, styles)\r\n };\r\n\r\n if (drawType === DrawType.Polyline) {\r\n properties[\"LENGTH\"] = feature.get(\"LENGTH\") || formatLength(feature.getGeometry());\r\n }\r\n if (drawType === DrawType.Polygon) {\r\n properties[\"AREA\"] = feature.get(\"AREA\") || formatArea(feature.getGeometry());\r\n properties[\"LENGTH\"] = feature.get(\"LENGTH\") || formatLength(feature.getGeometry());\r\n }\r\n\r\n feature.setId(oid);\r\n feature.setStyle();\r\n feature.setProperties(properties);\r\n};\r\n\r\nconst addFileType = (file: File): File => {\r\n const extension = file.name.split(\".\")[1].toLowerCase();\r\n const type =\r\n extension === \"kml\"\r\n ? \"application/vnd.google-earth.kml+xml\"\r\n : extension === \"kmz\"\r\n ? \"application/vnd.google-earth.kmz\"\r\n : extension === \"gpx\"\r\n ? \"application/gpx+xml\"\r\n : \"\";\r\n console.log(\"extension\", extension, type);\r\n return new File([file], file.name, {\r\n type\r\n });\r\n};\r\n\r\nconst getDrawType = (feature: Feature): DrawType => {\r\n const type = feature.getGeometry().getType();\r\n return type === \"Polygon\" || type === \"MultiPolygon\"\r\n ? DrawType.Polygon\r\n : type === \"LineString\" || type === \"MultiLineString\"\r\n ? DrawType.Polyline\r\n : type === \"Point\"\r\n ? getDescription(feature)\r\n ? DrawType.PointText\r\n : DrawType.Point\r\n : null;\r\n};\r\n\r\nconst getDescription = (feature: Feature): string => {\r\n const description = feature.get(\"description\");\r\n return description && description !== feature.get(\"name\") ? description : undefined;\r\n};\r\n\r\nconst getBuffer = (feature: Feature) => buffer(feature.getGeometry().getExtent(), 100);\r\n","import { Feature } from \"ol\";\r\nimport { GPX } from \"ol/format\";\r\nimport { LineString, MultiLineString, Polygon } from \"ol/geom\";\r\n\r\nconst parser = new DOMParser();\r\nconst gpxFormat = new GPX();\r\n\r\nexport const getGpxFeatures = (gpxText: string | ArrayBuffer): Feature[] => {\r\n const xmlDoc = parser.parseFromString(gpxText as string, \"application/xml\");\r\n const geomTypes = getGpxTrackTypes(xmlDoc);\r\n const pointTypes = getGpxPointTypes(xmlDoc);\r\n const features = gpxFormat.readFeatures(gpxText, {\r\n dataProjection: \"EPSG:4326\",\r\n featureProjection: \"EPSG:3059\"\r\n });\r\n\r\n return parseGpxFeatures(features, geomTypes, pointTypes);\r\n};\r\n\r\nconst getGpxTrackTypes = (xmlDoc: Document) => {\r\n const trksegTags = xmlDoc.getElementsByTagName(\"trkseg\");\r\n const trackTypes: (\"Polygon\" | \"LineString\")[] = [];\r\n if (trksegTags?.length) {\r\n Array.from(trksegTags).map((trkseg) => {\r\n const points = Array.from(trkseg.getElementsByTagName(\"trkpt\"));\r\n const geomType =\r\n points[0].getAttribute(\"lat\") === points[points.length - 1].getAttribute(\"lat\") &&\r\n points[0].getAttribute(\"lon\") === points[points.length - 1].getAttribute(\"lon\")\r\n ? \"Polygon\"\r\n : \"LineString\";\r\n trackTypes.push(geomType);\r\n });\r\n }\r\n\r\n return trackTypes;\r\n};\r\n\r\nconst getGpxPointTypes = (xmlDoc: Document) => {\r\n const pointTags = xmlDoc.getElementsByTagName(\"wpt\");\r\n const pointTypes = [];\r\n pointTags?.length &&\r\n Array.from(pointTags).map((point) => {\r\n const desc = point.querySelector(\"desc\")?.innerHTML;\r\n pointTypes.push(desc ? desc : \"Point\");\r\n });\r\n\r\n return pointTypes;\r\n};\r\n\r\nconst parseGpxFeatures = (features: Feature[], geomTypes, pointTypes) => {\r\n let pointNr = 0;\r\n let trackNr = 0;\r\n return features.map((feature) => {\r\n const geometry = feature.getGeometry();\r\n\r\n if (geometry.getType() === \"MultiLineString\") {\r\n geomTypes[trackNr] === \"Polygon\" &&\r\n feature.setGeometry(new Polygon((geometry as MultiLineString).getCoordinates()));\r\n geomTypes[trackNr] === \"LineString\" &&\r\n feature.setGeometry(new LineString((geometry as MultiLineString).getCoordinates().flat()));\r\n trackNr++;\r\n }\r\n\r\n if (geometry.getType() === \"Point\") {\r\n pointTypes[pointNr] !== \"Point\" && feature.set(\"description\", pointTypes[pointNr]);\r\n pointNr++;\r\n }\r\n\r\n return feature;\r\n });\r\n};\r\n","import { Feature } from \"ol\";\r\nimport { KML } from \"ol/format\";\r\n\r\nconst parser = new DOMParser();\r\nconst kmlFormat = new KML();\r\n\r\nexport const getKmlFeatures = (kmlText: string | ArrayBuffer): Feature[] => {\r\n let replacedKml;\r\n const hasOuterBoundaryIs = (kmlText as string).includes(\"outerBoundaryIs\");\r\n if (!hasOuterBoundaryIs) {\r\n replacedKml = (kmlText as string).replace(new RegExp(\"innerBoundaryIs\", \"g\"), \"outerBoundaryIs\");\r\n }\r\n\r\n return kmlFormat.readFeatures(hasOuterBoundaryIs ? kmlText : replacedKml, {\r\n dataProjection: \"EPSG:4326\",\r\n featureProjection: \"EPSG:3059\"\r\n });\r\n};\r\n\r\nexport const extractStylesFromKML = (kml) => {\r\n const xmlDoc = parser.parseFromString(kml, \"application/xml\");\r\n const styleTags = xmlDoc.getElementsByTagName(\"Style\");\r\n\r\n if (!styleTags?.length) {\r\n return;\r\n }\r\n const st = {};\r\n Array.from(styleTags).map((styleTag) => (st[styleTag.id] = styleTag.querySelector(\"color\")?.innerHTML));\r\n\r\n return st;\r\n};\r\n\r\nexport const getColorFromKmlStyles = (feature: Feature, styles): string => {\r\n const color = feature.get(\"COLOR\");\r\n if (color) {\r\n return color;\r\n }\r\n const styleId = feature.get(\"styleUrl\")?.split(\"#\")[1];\r\n return styles && styleId && styles[styleId] ? \"#\" + styles[styleId] : \"#FF6900\";\r\n};\r\n","import JSZip from \"jszip\";\r\n\r\nexport const unzipFile = async (inputZipFile: File): Promise => {\r\n try {\r\n const zip = new JSZip();\r\n const unzippedFiles = [];\r\n\r\n const zipBuffer = await inputZipFile.arrayBuffer();\r\n const zipData = await zip.loadAsync(zipBuffer);\r\n\r\n for (const [relativePath, zipEntry] of Object.entries(zipData.files)) {\r\n if (!zipEntry.dir) {\r\n const fileContentArray = await zipEntry.async(\"uint8array\");\r\n const blob = new Blob([fileContentArray], { type: \"application/octet-stream\" });\r\n const file = new File([blob], relativePath, { type: \"application/vnd.google-earth.kml+xml\" });\r\n unzippedFiles.push(file);\r\n }\r\n }\r\n\r\n return unzippedFiles;\r\n } catch (error) {\r\n console.error(\"Error unzipping file:\", error);\r\n return null;\r\n }\r\n};\r\n\r\nexport const blobToKmz = async (inputBlob: Blob, fileName: string): Promise => {\r\n try {\r\n const zip = new JSZip();\r\n\r\n zip.file(fileName + \".kml\", inputBlob);\r\n const zipBlob = await zip.generateAsync({\r\n type: \"blob\",\r\n mimeType: \"application/vnd.google-earth.kmz\"\r\n });\r\n return zipBlob;\r\n } catch (error) {\r\n console.error(\"Error zipping file:\", error);\r\n return null;\r\n }\r\n};\r\n","import * as React from \"react\";\r\nimport { ICustomerRow } from \"../IUserConfig\";\r\nimport \"./SideLogo.scss\";\r\n\r\nexport const SideLogo = ({ props }: { props: ICustomerRow }): JSX.Element => (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n);\r\n","import * as React from \"react\";\r\nimport { parseStyle } from \"../Toc/helpers\";\r\nimport { ICustomerRow } from \"../IUserConfig\";\r\nimport \"./UpperLogo.scss\";\r\n\r\nexport const UpperLogo = ({ props }: { props: ICustomerRow }): JSX.Element => (\r\n
\r\n
\r\n {!props.link ? null : (\r\n <>\r\n {props.logo ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n\r\n {props.text ? (\r\n
\r\n {props.text}\r\n
\r\n ) : null}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n","import classNames from \"classnames\";\r\nimport i18next from \"i18next\";\r\nimport React, { useCallback, useState } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { PopupButton } from \"../../Elements/PopupButton\";\r\nimport { getToken } from \"../rest\";\r\nimport { WidgetInput } from \"../Widget/WidgetInput\";\r\nimport { saveToken } from \"./Token\";\r\nimport \"./Authorization.scss\";\r\n\r\nexport const Authorization = (): JSX.Element => {\r\n const { language, setActiveToken } = useAppContext();\r\n const { configA } = useMapContext();\r\n const [username, setUsername] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [errorMessage, setErrorMessage] = useState(null);\r\n\r\n const updateUsername = (event: React.ChangeEvent) => setUsername(event.target.value);\r\n\r\n const updatePassword = (event: React.ChangeEvent) => setPassword(event.target.value);\r\n\r\n const login = useCallback(async () => {\r\n const response = await getToken(configA.endpoints[configA.geotelpa.endpoint], username, password);\r\n if (response.success) {\r\n saveToken(response.data);\r\n setActiveToken(response.data.token);\r\n setErrorMessage(null);\r\n } else {\r\n const errorText =\r\n response?.data?.error?.error_description?.find((err) => err.language === language)?.description ||\r\n i18next.t(\"mapDownload.error\");\r\n setErrorMessage(errorText);\r\n }\r\n }, [username, password, errorMessage]);\r\n\r\n return (\r\n <>\r\n
\r\n
{errorMessage || i18next.t(\"mapDownload.authorizeText\")}
\r\n
\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n","import i18next from \"i18next\";\r\nimport React from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./CustomerInfo.scss\";\r\n\r\nexport const CustomerInfo = (): JSX.Element => {\r\n const { configA } = useMapContext();\r\n\r\n const onHelpIconClick = () =>\r\n configA.geotelpa?.helpLink && window.open(configA.geotelpa?.helpLink, \"_blank\").focus();\r\n\r\n return (\r\n
\r\n
\r\n {configA.geotelpa.logo && }\r\n {configA.geotelpa.logo2 && }\r\n \r\n
\r\n
{i18next.t(\"mapDownload.description\")}
\r\n
\r\n );\r\n};\r\n","import i18next from \"i18next\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { TocWidget } from \"../Toc/TocWidget\";\r\nimport { Authorization } from \"./Authorization\";\r\nimport { CustomerInfo } from \"./CustomerInfo\";\r\nimport { SheetSelector } from \"./SheetSelector\";\r\n\r\nexport const MapDownloadWidget = (): JSX.Element => {\r\n const { activeToken } = useAppContext();\r\n const [showAuthorization, setShowAuthorization] = useState(!activeToken);\r\n\r\n useEffect(() => {\r\n // this is to prevent immediate remove of Authorization component from from DOM, as it cause errors\r\n activeToken && setTimeout(() => setShowAuthorization(false), 0);\r\n }, [activeToken]);\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {showAuthorization ? : }\r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { WidgetToolbarButton } from \"../Widget/WidgetToolbarButton\";\r\nimport { useCallback } from \"react\";\r\nimport { useMapDownloadContext } from \"../../Contexts/MapDownloadContext\";\r\nimport { SheetSelectMode } from \"../enums\";\r\n\r\nexport const MapSelect = (): JSX.Element => {\r\n const { sheetSelectMode, setSheetSelectMode } = useMapDownloadContext();\r\n\r\n const onClickSelect = useCallback(() => {\r\n setSheetSelectMode(sheetSelectMode && sheetSelectMode === SheetSelectMode.Click ? null : SheetSelectMode.Click);\r\n }, [sheetSelectMode]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { WidgetToolbarButton } from \"../Widget/WidgetToolbarButton\";\r\nimport { useCallback, useEffect, useRef } from \"react\";\r\nimport { useMapDownloadContext } from \"../../Contexts/MapDownloadContext\";\r\nimport { Draw } from \"ol/interaction\";\r\nimport { Vector as VectorSource } from \"ol/source\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { Feature } from \"ol\";\r\nimport { SheetSelectMode } from \"../enums\";\r\n\r\nexport const PolygonSelect = (): JSX.Element => {\r\n const { sheetSelectMode, setSheetSelectMode, setSheetSelectPolygon } = useMapDownloadContext();\r\n\r\n const drawRef = useRef();\r\n const sourceRef = useRef(new VectorSource());\r\n const polygonRef = useRef();\r\n const clickListenerRef = useRef<() => void>();\r\n\r\n useEffect(() => {\r\n sheetSelectMode && sheetSelectMode === SheetSelectMode.Polygon\r\n ? !drawRef.current && addInteraction()\r\n : drawRef.current && removeInteraction();\r\n }, [sheetSelectMode]);\r\n\r\n const addInteraction = () => {\r\n drawRef.current = new Draw({\r\n source: sourceRef.current,\r\n type: \"Polygon\"\r\n });\r\n\r\n drawRef.current.on(\"drawstart\", (e) => {\r\n polygonRef.current = e.feature;\r\n });\r\n\r\n clickListenerRef.current = clickListener;\r\n getMap().on(\"click\", clickListenerRef.current);\r\n\r\n getMap().addInteraction(drawRef.current);\r\n };\r\n\r\n const removeInteraction = () => {\r\n getMap().un(\"click\", clickListenerRef.current);\r\n clickListenerRef.current = null;\r\n getMap().removeInteraction(drawRef.current);\r\n drawRef.current = null;\r\n polygonRef.current = null;\r\n };\r\n\r\n const clickListener = () => polygonRef.current && setSheetSelectPolygon(polygonRef.current);\r\n\r\n const onClickSelect = useCallback(() => {\r\n setSheetSelectMode(\r\n sheetSelectMode && sheetSelectMode === SheetSelectMode.Polygon ? null : SheetSelectMode.Polygon\r\n );\r\n }, [sheetSelectMode]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport classNames from \"classnames\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useMapDownloadContext } from \"../../Contexts/MapDownloadContext\";\r\nimport { Feature } from \"ol\";\r\nimport { Fill, Stroke, Style } from \"ol/style\";\r\n\r\nconst highLightStyle = new Style({\r\n fill: new Fill({\r\n color: [255, 255, 0, 0.3]\r\n }),\r\n stroke: new Stroke({\r\n color: [255, 255, 0],\r\n width: 3\r\n })\r\n});\r\n\r\nexport const SelectedSheets = (): JSX.Element => {\r\n const { setHighlightFeatures, setLocateFeature } = useAppContext();\r\n const { sheetFeatures, setSheetFeatures } = useMapDownloadContext();\r\n const { setLimitExceeded } = useMapDownloadContext();\r\n const [activeItem, setActiveItem] = useState(null);\r\n\r\n useEffect(() => {\r\n sheetFeatures && setHighlightFeatures(sheetFeatures);\r\n !sheetFeatures?.length && setActiveItem(null);\r\n }, [sheetFeatures]);\r\n\r\n useEffect(() => {\r\n sheetFeatures &&\r\n sheetFeatures.map((f) =>\r\n activeItem && f.get(\"OBJECTID\") === activeItem.get(\"OBJECTID\")\r\n ? f.setStyle(highLightStyle)\r\n : f.setStyle()\r\n );\r\n }, [activeItem]);\r\n\r\n const onRemove = useCallback(\r\n (feature) => {\r\n setSheetFeatures(sheetFeatures.filter((f) => f.get(\"OBJECTID\") !== feature.get(\"OBJECTID\")));\r\n },\r\n [sheetFeatures]\r\n );\r\n\r\n const onRemoveAll = () => {\r\n setSheetFeatures([]);\r\n setActiveItem(null);\r\n setLimitExceeded(false);\r\n setHighlightFeatures([]);\r\n };\r\n\r\n const onHighlight = (feature: Feature) => setActiveItem(feature);\r\n\r\n const onZoom = (feature: Feature) => setLocateFeature(feature);\r\n\r\n return (\r\n
\r\n
{i18next.t(\"mapDownload.downloadList\")}
\r\n
\r\n
\r\n {sheetFeatures?.length\r\n ? sheetFeatures.map((f, index) => (\r\n \r\n onHighlight(f)}>\r\n {f.get(\"Karšu lapas numurs\")}\r\n \r\n onZoom(f)}\r\n >\r\n \r\n \r\n onRemove(f)}\r\n >\r\n \r\n \r\n
\r\n ))\r\n : null}\r\n
\r\n {sheetFeatures?.length >= 2 && (\r\n
\r\n {i18next.t(\"mapDownload.removeAll\")}\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { useState } from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { PopupButton } from \"../../Elements/PopupButton\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { downloadMapSheets, ISheetDownloadResult } from \"../rest\";\r\nimport { useMapDownloadContext } from \"../../Contexts/MapDownloadContext\";\r\nimport \"./SheetDownload.scss\";\r\n\r\nexport const SheetDownload = (): JSX.Element => {\r\n const { activeToken, language } = useAppContext();\r\n const { configA } = useMapContext();\r\n const { sheetFeatures } = useMapDownloadContext();\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [downloadUrl, setDownloadUrl] = useState();\r\n const [downloadErrorMessage, setDownloadErrorMessage] = useState();\r\n\r\n const startDownload = async () => {\r\n if (loading || sheetFeatures.length <= 0) {\r\n return;\r\n }\r\n\r\n const gridNumbers = sheetFeatures.map((f) => f.get(\"Karšu lapas numurs\"));\r\n setDownloadUrl(null);\r\n setDownloadErrorMessage(undefined);\r\n setLoading(true);\r\n\r\n const result: ISheetDownloadResult = await downloadMapSheets(\r\n gridNumbers,\r\n activeToken,\r\n configA.endpoints[configA.geotelpa.endpoint]\r\n );\r\n\r\n setDownloadUrl(result.fileUrl);\r\n setLoading(false);\r\n\r\n result?.error &&\r\n setDownloadErrorMessage(\r\n result?.error?.error?.error_description?.find((err) => err.language === language)?.description ||\r\n i18next.t(\"mapDownload.error\")\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n
{i18next.t(\"mapDownload.downloadMapFile\")}
\r\n
\r\n {downloadUrl ? : null}\r\n {loading ? : null}\r\n {downloadErrorMessage ?
{downloadErrorMessage}
: null}\r\n {!loading && !downloadUrl && !downloadErrorMessage ? (\r\n
{i18next.t(\"mapDownload.downloadMapFileDescription\")}
\r\n ) : null}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst Loading = () => (\r\n
\r\n \r\n \r\n);\r\n\r\nconst DownloadUrl = ({ downloadUrl }: { downloadUrl: string }) => (\r\n
\r\n \r\n \r\n);\r\n","import React, { useCallback, useRef, useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport classNames from \"classnames\";\r\nimport { Feature } from \"ol\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { executeQueryAndReturnFieldInfo } from \"../rest\";\r\nimport { decodeFeatureFields } from \"../utils\";\r\nimport { IEsriFieldInfo } from \"../interfaces\";\r\nimport { useMapDownloadContext } from \"../../Contexts/MapDownloadContext\";\r\n\r\nconst maxResults = 100;\r\nconst searchField = \"GRIDNUMBER\";\r\n\r\nexport const SheetSearch = (): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const { setIdentifiedSheet, sheetFeatures } = useMapDownloadContext();\r\n\r\n const [text, setText] = useState(\"\");\r\n const [results, setResults] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [expanded, setExpanded] = useState(false);\r\n\r\n const fieldInfoRef = useRef();\r\n\r\n const executeSearch = useCallback(async () => {\r\n if (!text) {\r\n return;\r\n }\r\n setLoading(true);\r\n const query = buildSimpleQuery(text);\r\n const queryResults = await executeQueryAndReturnFieldInfo(query.url, query.params);\r\n !fieldInfoRef.current && (fieldInfoRef.current = queryResults.fieldInfo);\r\n setResults(queryResults.features.slice(0, maxResults));\r\n setLoading(false);\r\n queryResults.features.length && setExpanded(true);\r\n }, [text]);\r\n\r\n const onChange = (e) => {\r\n setResults([]);\r\n setText(e.target.value);\r\n };\r\n\r\n const onSelect = (selectedFeature: Feature) => {\r\n const decodedFeature = decodeFeatureFields(selectedFeature, fieldInfoRef.current);\r\n setIdentifiedSheet([decodedFeature]);\r\n };\r\n\r\n const toggleResults = useCallback(() => {\r\n setExpanded(!expanded);\r\n }, [expanded]);\r\n\r\n const onKeyDown = (e) => {\r\n e.key === \"Enter\" && executeSearch();\r\n };\r\n\r\n const buildSimpleQuery = useCallback(\r\n (searchText: string) => {\r\n const mapLayer = getMap()\r\n .getLayers()\r\n .getArray()\r\n .find((l) => l.get(\"id\") === configA.geotelpa.searchLayerId);\r\n\r\n let layerQuery = `${searchField} LIKE '%{0}%'`;\r\n sheetFeatures.length > 0 &&\r\n (layerQuery +=\r\n \" AND NOT OBJECTID IN (\" + sheetFeatures.map((f) => f.get(\"OBJECTID\").toString()).join(\",\") + \")\");\r\n\r\n const where = layerQuery.replace(new RegExp(\"\\\\{0\\\\}\", \"g\"), searchText.toUpperCase());\r\n\r\n return {\r\n url: mapLayer.get(\"url\") + \"/0\",\r\n params: {\r\n f: \"json\",\r\n where,\r\n outFields: \"*\"\r\n }\r\n };\r\n },\r\n [sheetFeatures]\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n {!loading && text && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {results.map((result, i) => (\r\n
onSelect(result)}>\r\n {result.get(searchField)}\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import i18next from \"i18next\";\r\nimport React from \"react\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { useMapDownloadContext } from \"../../Contexts/MapDownloadContext\";\r\nimport { WidgetToolbar } from \"../Widget/WidgetToolbar\";\r\nimport { SheetDownload } from \"./SheetDownload\";\r\nimport { SheetSearch } from \"./SheetSearch\";\r\nimport { MapSelect } from \"./MapSelect\";\r\nimport { PolygonSelect } from \"./PolygonSelect\";\r\nimport { SelectedSheets } from \"./SelectedSheets\";\r\nimport \"./SheetSelector.scss\";\r\n\r\nexport const SheetSelector = (): JSX.Element => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst ErrorMessage = () => {\r\n const { configA } = useMapContext();\r\n const { limitExceeded } = useMapDownloadContext();\r\n\r\n return (\r\n <>\r\n {limitExceeded && (\r\n
\r\n
\r\n {i18next\r\n .t(\"mapDownload.numberOfMapDownloadsTooLarge\")\r\n .replace(\"'{0}'\", configA.geotelpa.mapDownloadMaxCount.toString())}\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n","export interface IToken {\r\n expires: string;\r\n extraLayers: string;\r\n token: string;\r\n}\r\n\r\nexport enum GeotelpaSessionStorage {\r\n Token = \"geotelpatoken\",\r\n ExtraLayers = \"geotelpatokenextralayers\",\r\n Expires = \"geotelpatokenexpires\"\r\n}\r\n\r\nexport const getCurrentActiveToken = (): string => {\r\n const tokenExpiresDateString = sessionStorage.getItem(GeotelpaSessionStorage.Expires);\r\n const activeTokenExpiresDate = tokenExpiresDateString ? new Date(tokenExpiresDateString) : null;\r\n const now = new Date();\r\n return activeTokenExpiresDate && activeTokenExpiresDate > now\r\n ? sessionStorage.getItem(GeotelpaSessionStorage.Token)\r\n : null;\r\n};\r\n\r\nexport const getTokenExtraLayers = (): string => {\r\n const tokenExpiresDateString = sessionStorage.getItem(GeotelpaSessionStorage.Expires);\r\n const activeTokenExpiresDate = tokenExpiresDateString ? new Date(tokenExpiresDateString) : null;\r\n const now = new Date();\r\n return activeTokenExpiresDate && activeTokenExpiresDate > now\r\n ? sessionStorage.getItem(GeotelpaSessionStorage.ExtraLayers)\r\n : null;\r\n};\r\n\r\nexport const saveToken = (token: IToken) => {\r\n sessionStorage.setItem(GeotelpaSessionStorage.Token, token.token);\r\n sessionStorage.setItem(GeotelpaSessionStorage.ExtraLayers, token.extraLayers);\r\n sessionStorage.setItem(GeotelpaSessionStorage.Expires, token.expires);\r\n};\r\n","import * as React from \"react\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { Popup, PopupHeader, PopupBody, PopupFooter } from \"../../Popups/Popup\";\r\nimport { CloseButton } from \"../../Elements/CloseButton\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { IPopupConfig } from \"../config\";\r\nimport \"./NewsPopup.scss\";\r\n\r\nexport interface IPopup extends IPopupConfig {\r\n seen: boolean;\r\n}\r\n\r\nexport const NewsPopup = (): JSX.Element => {\r\n const { isMobile } = useAppContext();\r\n const { configA } = useMapContext();\r\n\r\n const hasNewsPopup = () => {\r\n const storedPopupsJson = localStorage.getItem(\"popups\");\r\n const storedPopups = storedPopupsJson && (JSON.parse(storedPopupsJson) as IPopup[]);\r\n\r\n const popups = [] as IPopup[];\r\n\r\n for (const popup of configA.popup) {\r\n let seen = false;\r\n if (storedPopups) {\r\n const sameStoredPopup = storedPopups.find(\r\n (storedPopup) => storedPopup.id === popup.id && storedPopup.version === popup.version\r\n );\r\n if (sameStoredPopup) {\r\n seen = sameStoredPopup.seen;\r\n }\r\n }\r\n popups.push({ ...popup, seen });\r\n }\r\n\r\n return popups;\r\n };\r\n\r\n const [popups, setPopups] = useState(hasNewsPopup());\r\n\r\n const closePopup = useCallback(\r\n (id: string) => {\r\n if (!popups) {\r\n return;\r\n }\r\n const newPopups = [...popups];\r\n const currentPopup = newPopups.find((popup) => popup.id === id);\r\n if (currentPopup) {\r\n currentPopup.seen = true;\r\n localStorage.setItem(\"popups\", JSON.stringify(newPopups));\r\n setPopups(newPopups);\r\n }\r\n },\r\n [popups]\r\n );\r\n\r\n const currentPopup = popups.find((popup) => !popup.seen);\r\n\r\n return (\r\n <>\r\n {popups?.length && currentPopup ? (\r\n \r\n \r\n
\r\n closePopup(currentPopup.id)}>\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect, useRef } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport Portal from \"../../Popups/Portal\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { usePrintContext } from \"../../Contexts/PrintContext\";\r\n\r\nexport const PrintFrame = (): JSX.Element => {\r\n const { printFrame } = useMapContext();\r\n const { format } = usePrintContext();\r\n\r\n const containerRef = useRef();\r\n const frameRef = useRef();\r\n\r\n useEffect(() => {\r\n if (!frameRef.current) {\r\n return;\r\n }\r\n\r\n frameRef.current.style.width = \"100%\";\r\n frameRef.current.style.height = \"100%\";\r\n\r\n if (!printFrame) {\r\n return;\r\n }\r\n const container = containerRef.current.getBoundingClientRect();\r\n const parentRatio = container.width / container.height;\r\n const pageRatio = format.value.includes(\"landscape\") ? 1.65 : 0.75;\r\n\r\n frameRef.current.style.height =\r\n parentRatio > pageRatio ? \"100%\" : `${Math.round(container.width / pageRatio)}px`;\r\n\r\n frameRef.current.style.width =\r\n parentRatio > pageRatio ? `${Math.round(container.height * pageRatio)}px` : \"100%\";\r\n }, [printFrame, format]);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { ToggleSwitch } from \"../../Elements/ToggleSwitch\";\r\nimport { usePrintContext } from \"../../Contexts/PrintContext\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { InfoButton } from \"../../Popups/Info/InfoButton\";\r\n\r\nexport const PrintOptions = (): JSX.Element => {\r\n const { configA, printFrame, setPrintFrame } = useMapContext();\r\n const { useLegend, setUseLegend, useVectors, setUseVectors } = usePrintContext();\r\n\r\n return (\r\n <>\r\n \r\n {!configA.print.disableUseVectorsOption && (\r\n }\r\n >\r\n )}\r\n\r\n \r\n {printFrame &&

{i18next.t(\"print.previewDescription\")}

}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { usePrintContext } from \"../../Contexts/PrintContext\";\r\n\r\nexport const PrintResult = (): JSX.Element => {\r\n const { loading, printUrl } = usePrintContext();\r\n\r\n return (\r\n
\r\n
{i18next.t(\"print.exportFile\")}
\r\n
\r\n {loading ? : null}\r\n {printUrl ? : null}\r\n {!loading && !printUrl ?
{i18next.t(\"print.exportedPrintLocation\")}
: null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst Loading = () => (\r\n
\r\n \r\n \r\n);\r\n\r\nconst PrintUrl = ({ printUrl }: { printUrl: string }) =>\r\n printUrl === \"error\" ? (\r\n
{i18next.t(\"print.error\")}
\r\n ) : (\r\n
\r\n \r\n \r\n );\r\n","import * as React from \"react\";\r\nimport { ChangeEvent, useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { PageSize } from \"@geo/print-service-api\";\r\nimport { printPost } from \"./printTools\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { Select } from \"../../Elements/Select\";\r\nimport { PopupButton } from \"../../Elements/PopupButton\";\r\nimport { IFormat, pageOrientation, usePrintContext } from \"../../Contexts/PrintContext\";\r\nimport { PrintOptions } from \"./PrintOptions\";\r\nimport { PrintResult } from \"./PrintResult\";\r\nimport { PrintFrame } from \"./PrintFrame\";\r\nimport \"./PrintWidget.scss\";\r\nimport { WidgetInput } from \"../Widget/WidgetInput\";\r\n\r\nexport const PrintWidget = (): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const { loading, setLoading, useLegend, useVectors, setPrintUrl, format, setFormat } = usePrintContext();\r\n\r\n const [title, setTitle] = useState(\"\");\r\n\r\n const print = () => {\r\n setLoading(true);\r\n setPrintUrl(undefined);\r\n\r\n const useDefaultTitle =\r\n configA.print.useDefaultTitleWhenEmpty !== undefined ? configA.print.useDefaultTitleWhenEmpty : true;\r\n const newTitle = title ? title : useDefaultTitle ? i18next.t(\"print.printExport\") : \" \"; //TODO: hack here by adding whitespace, on serverside there seems to be default title which is used if provided string is empty\r\n\r\n printPost(configA, newTitle, format.value as PageSize, useLegend, useVectors, onError).then(\r\n (response) => {\r\n if (response && response.status === 200) {\r\n setLoading(false);\r\n setPrintUrl(configA.print.url.replace(configA.print.endpoint.url, \"\") + \"/\" + response.data.file);\r\n }\r\n },\r\n () => onError()\r\n );\r\n };\r\n\r\n const onError = () => {\r\n setLoading(false);\r\n setPrintUrl(\"error\");\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
{i18next.t(\"print.title\")}
\r\n setTitle(e.target.value)}\r\n maxLength={200}\r\n />\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst Format = ({ format, setFormat }: { format: IFormat; setFormat: CallableFunction }) => {\r\n const onClickGroup = (e: ChangeEvent) => {\r\n const groupValue = pageOrientation.find((o) => o.label === e.target.value);\r\n setFormat(groupValue);\r\n };\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","import Axios, { AxiosResponse } from \"axios\";\r\nimport {\r\n IPrintRequestPostParams,\r\n ExportOptions,\r\n IMapOptions,\r\n IArcGISDynamicMapServiceLayer,\r\n IWMSLayer,\r\n IWMTSLayer,\r\n IArcGISTiledMapServiceLayer,\r\n IGraphicsLayer,\r\n IFeatureLayer,\r\n PageSize,\r\n IDocumentExportOptions,\r\n ServiceLayer,\r\n IExtent,\r\n EsriRenderer\r\n} from \"@geo/print-service-api\";\r\nimport { IConfig } from \"../config\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { DrawType, LayerType } from \"../enums\";\r\nimport { Layer, Tile as TileLayer, Image as ImageLayer, Vector as VectorLayer } from \"ol/layer\";\r\nimport { TileWMS, XYZ, ImageArcGISRest, WMTS, Vector as VectorSource } from \"ol/source\";\r\nimport BaseLayer from \"ol/layer/Base\";\r\nimport { EsriJSON } from \"ol/format\";\r\nimport { Feature } from \"ol\";\r\n\r\nconst esriJsonFormat = new EsriJSON();\r\n\r\nexport const printPost = (\r\n config: IConfig,\r\n title: string,\r\n pageSize: PageSize,\r\n useLegend: boolean,\r\n useVectors: boolean,\r\n printError: CallableFunction\r\n): Promise> =>\r\n Axios.post(config.print.url + \"?f=json\", getRequestData(config, title, pageSize, useLegend, useVectors))\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n printError();\r\n return;\r\n });\r\n\r\nconst getRequestData = (\r\n config: IConfig,\r\n title: string,\r\n pageSize: PageSize,\r\n useLegend: boolean,\r\n useVectors: boolean\r\n): IPrintRequestPostParams => ({\r\n export: getExportOptions(config, title, pageSize, useLegend, useVectors),\r\n map: getMapOptions(),\r\n layers: getLayersOptions()\r\n});\r\n\r\nconst getExportOptions = (\r\n config: IConfig,\r\n title: string,\r\n pageSize: PageSize,\r\n legend: boolean,\r\n useVectors: boolean\r\n): ExportOptions => {\r\n const type =\r\n config.print.overview.layer.type === LayerType.TileLayer\r\n ? \"ArcGISTiledMapServiceLayer\"\r\n : config.print.overview.layer.type === LayerType.MapImageLayer\r\n ? \"ArcGISDynamicMapServiceLayer\"\r\n : config.print.overview.layer.type === LayerType.WMTS\r\n ? \"WMTSLayer\"\r\n : \"WMSLayer\";\r\n\r\n const layer = {\r\n type,\r\n url: config.endpoints[config.print.overview.layer.url.endpoint] + config.print.overview.layer.url.url,\r\n title: \"\"\r\n };\r\n\r\n const layoutOptions = {\r\n title: config.print.staticTitle || title,\r\n // subTitle: config.print.staticTitle ? title : undefined,\r\n legend,\r\n overview: {\r\n layer: layer as ServiceLayer,\r\n extent: config.print.overview.extent\r\n }\r\n };\r\n\r\n const options: IDocumentExportOptions = {\r\n type: \"document\",\r\n // appid ir pielikts bibliotēkas jaunākajā versijā\r\n //@ts-ignore\r\n appid: encodeURI(window.location.host + window.location.pathname),\r\n grid: \"none\",\r\n useVectors,\r\n pageSize,\r\n layoutOptions\r\n };\r\n\r\n return options;\r\n};\r\n\r\nconst getMapOptions = (): IMapOptions => {\r\n const ext = getMap().getView().calculateExtent(getMap().getSize());\r\n const extent: IExtent = {\r\n xmin: ext[0],\r\n ymin: ext[1],\r\n xmax: ext[2],\r\n ymax: ext[3]\r\n };\r\n\r\n return {\r\n dpi: 96,\r\n extent,\r\n spatialReference: getMapViewSpatialReference(),\r\n scale: getMapViewScale()\r\n };\r\n};\r\n\r\nconst getLayersOptions = () => {\r\n const mapLayers = getMap().getLayers().getArray();\r\n const basemapLayers = mapLayers.filter((l) => l.getZIndex() === 0);\r\n const tocLayers = mapLayers.filter((l) => l.getZIndex() !== 0);\r\n\r\n return [...getLayersData(basemapLayers), ...getLayersData(tocLayers)];\r\n};\r\n\r\nconst getLayersData = (mapLayers: BaseLayer[]) => {\r\n const layers = [];\r\n mapLayers.map((layer: BaseLayer) => {\r\n if (!(layer as Layer).isVisible(getMap().getView())) {\r\n return;\r\n }\r\n\r\n layers.push(\r\n layer.get(\"type\") === LayerType.TileLayer\r\n ? getTileLayerData(layer as TileLayer)\r\n : layer.get(\"type\") === LayerType.MapImageLayer\r\n ? getMapImageLayerData(layer as ImageLayer)\r\n : layer.get(\"type\") === LayerType.WMS\r\n ? getWMSLayerData(layer as TileLayer)\r\n : layer.get(\"type\") === LayerType.WMTS\r\n ? getWMTSLayerData(layer as TileLayer)\r\n : layer.get(\"type\") === LayerType.FeatureLayer\r\n ? getDataForFeatureLayer(layer as VectorLayer)\r\n : undefined\r\n );\r\n });\r\n\r\n return layers.filter((layer) => !!layer);\r\n};\r\n\r\nconst getTileLayerData = (layer: TileLayer): IArcGISTiledMapServiceLayer => {\r\n const copyright = layer.get(\"copyright\") && layer.get(\"copyright\") !== \"NONE\" && layer.get(\"copyright\");\r\n return {\r\n type: \"ArcGISTiledMapServiceLayer\",\r\n url: layer.get(\"url\"),\r\n opacity: layer.getOpacity(),\r\n title: layer.get(\"title\"),\r\n copyright\r\n };\r\n};\r\n\r\nconst getMapImageLayerData = (layer: ImageLayer): IArcGISDynamicMapServiceLayer => {\r\n const visibleLayers = layer.getSource().getParams().LAYERS.split(\"show:\")[1].split(\",\").map(Number); // LAYERS:\"show:2,5,6\"\r\n const copyright = layer.get(\"copyright\") && layer.get(\"copyright\") !== \"NONE\" && layer.get(\"copyright\");\r\n\r\n return {\r\n type: \"ArcGISDynamicMapServiceLayer\",\r\n url: layer.get(\"url\"),\r\n opacity: layer.getOpacity(),\r\n visibleLayers,\r\n title: layer.get(\"title\"),\r\n copyright\r\n };\r\n};\r\n\r\nconst getWMSLayerData = (layer: TileLayer): IWMSLayer => {\r\n const copyright = layer.get(\"copyright\") && layer.get(\"copyright\") !== \"NONE\" && layer.get(\"copyright\");\r\n\r\n return {\r\n type: \"WMSLayer\",\r\n url: layer.get(\"url\"),\r\n opacity: layer.getOpacity(),\r\n title: layer.get(\"title\"),\r\n version: layer.get(\"version\") || \"1.3.0\",\r\n visibleLayers: layer.get(\"layers\"),\r\n format: layer.get(\"imagetype\"),\r\n copyright\r\n };\r\n};\r\n\r\nconst getWMTSLayerData = (layer: TileLayer): IWMTSLayer => {\r\n const copyright = layer.get(\"copyright\") && layer.get(\"copyright\") !== \"NONE\" && layer.get(\"copyright\");\r\n const layerName = layer.getSource().getLayer();\r\n const layerNameString = Array.isArray(layerName) ? layerName[0] : layerName;\r\n\r\n return {\r\n type: \"WMTSLayer\",\r\n url: layer.get(\"url\"),\r\n opacity: layer.getOpacity(),\r\n title: layer.get(\"title\"),\r\n id: layerNameString,\r\n //@ts-ignore\r\n layer: layerNameString,\r\n matrixSet: layer.getSource().getMatrixSet(),\r\n format: layer.getSource().getFormat(),\r\n serviceMode: \"KVP\",\r\n copyright\r\n };\r\n};\r\n\r\nconst getDataForGraphicsLayer = (layer: VectorLayer) => {\r\n //: IGraphicsLayer => {\r\n const features = layer.getSource().getFeatures();\r\n\r\n // features.map((f) => {\r\n // const olStyle = getDrawingSymbol(f, f.get(\"MEASUREMENTSHIDDEN\"), f.get(\"DRAWTYPE\"), f.get(\"COLOR\"));\r\n // console.log(\"olStyle\", olStyle);\r\n // // f.setStyle( );\r\n // });\r\n\r\n // const geoJsonFeatures = geojsonFormat.writeFeaturesObject(features);\r\n const esriFeatures = esriJsonFormat.writeFeaturesObject(features);\r\n const parsedFeatures = features.map((f) => {\r\n const esriFeature = esriJsonFormat.writeFeatureObject(f);\r\n esriFeature.geometry.spatialReference = { latestWkid: 3059, wkid: 3059 };\r\n esriFeature.symbol = getEsriSymbol(f); // { type: \"esriSLS\", color: [255, 0, 0, 255], width: 2, style: \"esriSLSSolid\" }\r\n\r\n return esriFeature;\r\n });\r\n console.log(\"esriFeatures\", esriFeatures);\r\n return {\r\n type: \"GraphicsLayer\",\r\n opacity: layer.getOpacity(),\r\n popupTemplate: null,\r\n // renderer: {}, // layer.renderer.toJSON(),\r\n graphics: parsedFeatures\r\n };\r\n};\r\n\r\n// TODO need to finish FeatureLayer params\r\n// main problem is to create renderer data from OL styles\r\nconst getDataForFeatureLayer = (layer: VectorLayer) /*: IFeatureLayer*/ => {\r\n // at this moment, only drawn features can be printed\r\n return layer.get(\"id\") === \"drawingLayer\" && getDataForGraphicsLayer(layer);\r\n};\r\n\r\nconst getEsriSymbol = (feature: Feature) => {\r\n const type = feature.get(\"DRAWTYPE\");\r\n const color = hex2rgbaESRI(feature.get(\"COLOR\")) || [255, 0, 0, 255];\r\n const style =\r\n type === DrawType.Polyline\r\n ? {\r\n type: \"esriSLS\",\r\n color,\r\n width: 2,\r\n style: \"esriSLSSolid\"\r\n }\r\n : type === DrawType.Polygon\r\n ? {\r\n color: hex2rgbaESRI(feature.get(\"COLOR\"), 60) || [255, 0, 0, 255, 50],\r\n outline: { type: \"esriSLS\", color, width: 2, style: \"esriSLSSolid\" },\r\n style: \"esriSFSSolid\",\r\n type: \"esriSFS\"\r\n }\r\n : type === DrawType.PointText\r\n ? {\r\n angle: 0,\r\n color,\r\n font: { family: \"arial\", weight: \"bold\", size: 11 },\r\n haloColor: [255, 255, 255, 255],\r\n haloSize: 1,\r\n horizontalAlignment: \"center\",\r\n kerning: true,\r\n lineHeight: 1,\r\n lineWidth: 192,\r\n rotated: false,\r\n text: feature.get(\"DESCRIPTION\"),\r\n type: \"esriTS\",\r\n xoffset: 0,\r\n yoffset: 0\r\n }\r\n : {\r\n angle: 0,\r\n color,\r\n outline: {\r\n type: \"esriSLS\",\r\n color,\r\n width: 2,\r\n style: \"esriSLSSolid\"\r\n },\r\n size: 7.5,\r\n style: \"esriSMSCircle\",\r\n type: \"esriSMS\",\r\n xoffset: 0,\r\n yoffset: 0\r\n };\r\n\r\n return style;\r\n};\r\n\r\nconst getMapViewSpatialReference = () => {\r\n const proj = getMap().getView().getProjection().getCode();\r\n const projNumber = proj.split(\":\")[1];\r\n\r\n return { wkid: Number(projNumber), latestWkid: Number(projNumber) /* why is 'latestWkid' needed? */ };\r\n};\r\n//@ts-ignore\r\nconst getMapViewScale = (): number => document.mapScale;\r\n\r\nconst getMapViewZoom = (): number => getMap().getView().getZoom();\r\n\r\nconst hex2rgbaESRI = (hex: string, alpha = 255): number[] => {\r\n const [r, g, b] = hex.match(/\\w\\w/g).map((x) => parseInt(x, 16));\r\n return [r, g, b, alpha];\r\n};\r\n","import * as React from \"react\";\r\nimport { Map } from \"ol\";\r\nimport { FC, useEffect, useState } from \"react\";\r\nimport { AdvancedDropdown } from \"../Coordinates/AdvancedDropdown\";\r\nimport { ISingleRowList } from \"../Coordinates/DropdownList\";\r\nimport { boundrieTypes } from \"../config\";\r\nimport { DropdownType } from \"../enums\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport i18next from \"i18next\";\r\nimport { roundToPlaceValue } from \"../utils\";\r\nimport { getPointResolution } from \"ol/proj\";\r\nimport \"./ScaleWidget.scss\";\r\n\r\ninterface IScaleWidget {\r\n map: Map;\r\n onSizeChange?: (mobile: boolean, expanded: boolean) => void;\r\n colapsedByDefault?: boundrieTypes;\r\n}\r\n\r\ninterface ISizeState {\r\n mobile: boolean;\r\n expanded: boolean;\r\n}\r\n\r\nlet DEFAULT_DPI;\r\nconst inchesPerMeter = 1000 / 25.4;\r\n\r\nexport const ScaleWidget: FC = (props: IScaleWidget) => {\r\n const { configA } = useMapContext();\r\n\r\n DEFAULT_DPI = configA.defaultDpi || 96.198892;\r\n\r\n const getScales = () => {\r\n const view = props.map.getView();\r\n return view\r\n .getResolutions()\r\n .map((res, i) => {\r\n const pointResolution = getPointResolution(view.getProjection(), res, view.getCenter(), \"m\");\r\n return {\r\n label: i,\r\n value: roundToPlaceValue(parseFloat(pointResolution.toString()) * inchesPerMeter * DEFAULT_DPI)\r\n };\r\n })\r\n .filter((r) => r);\r\n };\r\n\r\n const scales = configA.mapLods ? configA.mapLods.map((lod, i) => ({ label: i, value: lod.scale })) : getScales();\r\n\r\n const getSizeState = (): ISizeState =>\r\n document.body.scrollWidth > 660 && isExpandAllowed(props.colapsedByDefault)\r\n ? { mobile: false, expanded: true }\r\n : { mobile: true, expanded: false };\r\n\r\n //@ts-ignore\r\n const [scale, setScale] = useState(document.mapScale);\r\n const [sizeState, setSizeState] = useState(getSizeState());\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"resize\", () => checkSize());\r\n document.addEventListener(\"moveend\", (e) => onMoveEnd(e));\r\n\r\n return () => {\r\n document.removeEventListener(\"resize\", () => checkSize());\r\n document.removeEventListener(\"moveend\", (e) => onMoveEnd(e));\r\n };\r\n }, []);\r\n\r\n const onMoveEnd = (e) => setScale(e.detail);\r\n\r\n const changScale = (attribute: ISingleRowList) =>\r\n props.map.getView().animate({ zoom: Number(attribute.label), duration: 500 });\r\n\r\n const checkSize = () => {\r\n const sizeStateNew = getSizeState();\r\n if (sizeStateNew.mobile !== sizeState.mobile || sizeStateNew.expanded !== sizeState.expanded) {\r\n setSizeState(sizeStateNew);\r\n props.onSizeChange && props.onSizeChange(sizeStateNew.mobile, sizeStateNew.expanded);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n changScale(at as ISingleRowList)}\r\n chevronClass={[\"esri-icon-up\", \"esri-icon-down\"]}\r\n />\r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction inIframe() {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n}\r\n\r\nfunction isExpandAllowed(rule: boundrieTypes | undefined) {\r\n if (!rule || rule === \"none\" || (rule === \"iframe\" && !inIframe())) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n","import classnames from \"classnames\";\r\nimport { IFeatureGroup } from \"@geo/js\";\r\nimport * as React from \"react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { FeatureList } from \"./FeatureList\";\r\nimport \"./FeatureGroup.scss\";\r\n\r\nexport const FeatureGroup = ({ featureGroup }: { featureGroup: IFeatureGroup }): JSX.Element => {\r\n const [expanded, setExpanded] = useState(\r\n featureGroup.expanded !== undefined ? featureGroup.expanded : featureGroup.features.length <= 5\r\n );\r\n\r\n useEffect(() => {\r\n featureGroup &&\r\n featureGroup.sortGroup !== false &&\r\n (featureGroup.features = sortFeatures(featureGroup.features));\r\n }, [featureGroup]);\r\n\r\n const toggleExpand = () => {\r\n setExpanded(!expanded);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
{featureGroup.label}
\r\n
{featureGroup.features.length}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst sortFeatures = (features: any) => {\r\n if (features.length === 1) {\r\n return features;\r\n }\r\n\r\n return features.sort((a: any, b: any) => {\r\n const valueA = a.label;\r\n const valueB = b.label;\r\n\r\n if (valueA === undefined) {\r\n // empty values are sorted to the back\r\n return 1;\r\n }\r\n if (valueB === undefined) {\r\n return -1;\r\n }\r\n\r\n if (isString(valueA)) {\r\n return valueA.localeCompare(valueB, \"lv\", { sensitivity: \"accent\" });\r\n }\r\n if (valueA < valueB) {\r\n return -1;\r\n }\r\n if (valueA > valueB) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n};\r\n\r\nconst isString = (value: any) => {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n","import classnames from \"classnames\";\r\nimport { IFeature as GeoJSFeature } from \"@geo/js\";\r\nimport * as React from \"react\";\r\nimport { useSearchContext } from \"../../Contexts/SearchContext\";\r\n\r\nconst strings = { defaultDisplayValue: \"Vērtība nav ievadīta\" };\r\n\r\nexport const FeatureList = ({ features, id }: { features: GeoJSFeature[]; id: string }): JSX.Element => {\r\n const { selected, setSelected } = useSearchContext();\r\n\r\n const onFeatureClick = (feature: any) => setSelected(feature);\r\n\r\n return (\r\n <>\r\n {features.map((feature: any, i) => {\r\n const key = id + \"_\" + feature.get(\"label\") + i;\r\n const classNames = classnames(\"search-result-feature\", {\r\n \"selected-feature\":\r\n selected && selected.feature && selected.feature.get(\"OBJECTID\") === feature.get(\"OBJECTID\")\r\n });\r\n\r\n return (\r\n
onFeatureClick(feature)}>\r\n
{feature.get(\"label\") || strings.defaultDisplayValue}
\r\n
\r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import i18next from \"i18next\";\r\nimport React, { ChangeEvent } from \"react\";\r\nimport { useSearchContext } from \"../../Contexts/SearchContext\";\r\nimport { Select } from \"../../Elements/Select\";\r\n\r\nexport const SearchGroup = (): JSX.Element => {\r\n const { groups, selectedGroup, setSelectedGroup, setSearchHelp, setResultFeatures, setError, setNotification } =\r\n useSearchContext();\r\n\r\n const onClickGroup = (e: ChangeEvent) => {\r\n const groupValue = groups.find((o) => o.label === e.target.value);\r\n\r\n setSelectedGroup(groupValue);\r\n setSearchHelp(true);\r\n setResultFeatures([]);\r\n setError(\"\");\r\n setNotification(\"\");\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import i18next from \"i18next\";\r\nimport React from \"react\";\r\nimport { getLayerConfig } from \"./SearchUtils\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { useSearchContext } from \"../../Contexts/SearchContext\";\r\nimport \"./SearchHelp.scss\";\r\n\r\nexport const SearchHelp = (): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const { selectedGroup } = useSearchContext();\r\n\r\n const strings = {\r\n searchHelp: i18next.t(\"searchPanel.searchHelp\"),\r\n searchHelpIntro: i18next.t(\"searchPanel.searchHelpIntro\")\r\n };\r\n\r\n const searchGroupConfig = configA.search.groups.filter((group) => group.id === selectedGroup.value)[0];\r\n\r\n const introText = strings.searchHelpIntro.replace(new RegExp(\"\\\\{0\\\\}\", \"g\"), searchGroupConfig.label);\r\n\r\n return (\r\n <>\r\n {!configA.search ? null : (\r\n
\r\n
{introText}
\r\n
    \r\n {searchGroupConfig.services.map((searchServiceConfig) =>\r\n searchServiceConfig.layerIds.map((layerId: number) => {\r\n const layerConfig = getLayerConfig(\r\n searchServiceConfig.serviceId,\r\n layerId,\r\n configA.layers\r\n );\r\n if (!layerConfig) {\r\n return;\r\n }\r\n\r\n const layerLabel = layerConfig ? layerConfig.label : null;\r\n\r\n return layerLabel && layerConfig.queryHelp ? (\r\n
  • \r\n {layerLabel}\r\n
    \r\n
  • \r\n ) : null;\r\n })\r\n )}\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport i18next from \"i18next\";\r\nimport axios from \"axios\";\r\nimport { Feature } from \"ol\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { useSearchContext } from \"../../Contexts/SearchContext\";\r\nimport { createFeatureGroup, extendFeatures, ILayerConfig, replaceFieldsWithValues } from \"./SearchUtils\";\r\nimport { IFeatureGroup } from \"@geo/js\";\r\nimport { buildQueries, executeDefaultQuery, executeOracleTextSearchQuery } from \"./searchQueries\";\r\n\r\nexport const SearchInput = (): JSX.Element => {\r\n const { configA } = useMapContext();\r\n const {\r\n searchParam,\r\n setSearchParam,\r\n resultFeatures,\r\n setResultFeatures,\r\n loading,\r\n setLoading,\r\n setSearchHelp,\r\n setSelected,\r\n selectedGroup,\r\n setError,\r\n setNotification\r\n } = useSearchContext();\r\n\r\n const [layerInfos, setLayerInfos] = useState<[]>([]);\r\n\r\n const resultFeaturesRef = useRef([]);\r\n\r\n useEffect(() => {\r\n resultFeaturesRef.current = resultFeatures;\r\n }, [resultFeatures]);\r\n\r\n const executeSearch = useCallback(async () => {\r\n if (!searchParam || loading) {\r\n return;\r\n }\r\n setLoading(true);\r\n setResultFeatures([]);\r\n setLoading(true);\r\n setSearchHelp(false);\r\n setError(\"\");\r\n const queries = buildQueries(searchParam, configA, selectedGroup, onError);\r\n await doQuery(queries.flat());\r\n setLoading(false);\r\n }, [searchParam, selectedGroup, loading]);\r\n\r\n const onKeyDown = (e) => e.key === \"Enter\" && executeSearch();\r\n\r\n const onClear = () => {\r\n setSearchParam(\"\");\r\n setSelected(undefined);\r\n };\r\n\r\n const clearResults = () => {\r\n setResultFeatures([]);\r\n setSearchHelp(true);\r\n };\r\n\r\n const onChange = (e) => {\r\n setSelected(undefined);\r\n setSearchParam(e.target.value);\r\n };\r\n\r\n const onError = () => {\r\n setLoading(false);\r\n setError(i18next.t(\"searchPanel.inputDoesntMatch\"));\r\n };\r\n\r\n const doQuery = async (queries) => {\r\n if (!queries) {\r\n return [];\r\n }\r\n\r\n const results = [];\r\n for (const query of queries) {\r\n const features =\r\n query.layer?.type === \"oracleTextSearch\"\r\n ? await executeOracleTextSearchQuery(query.url, query.layer, query.searchParam)\r\n : await executeDefaultQuery(query.url, query.layer, query.searchParam);\r\n //@ts-ignore\r\n features && addResults(features, query.layer);\r\n }\r\n return results;\r\n };\r\n\r\n const addResults = async (results: Feature[], layerConfig, sortGroup?: boolean) => {\r\n layerConfig.layerInfo = await getLayerInfo(layerConfig);\r\n const features = extendFeatures(results, layerConfig);\r\n const featureGroup = createFeatureGroup(layerConfig, features, sortGroup);\r\n\r\n const resultFeaturesNew = [...resultFeaturesRef.current, featureGroup];\r\n\r\n resultFeaturesNew.forEach((resultFeature) => {\r\n if (resultFeature.features && resultFeature.features.length === 1000) {\r\n setNotification(i18next.t(\"searchPanel.reachedMax\"));\r\n setTimeout(() => {\r\n setNotification(\"\");\r\n }, 3000);\r\n }\r\n });\r\n setResultFeatures(resultFeaturesNew);\r\n setLoading(false);\r\n };\r\n\r\n const getLayerInfo = async (layerConfig: ILayerConfig) => {\r\n const layerInfoId = layerConfig.serviceId + \"_\" + layerConfig.id;\r\n if (layerInfos[layerInfoId]) {\r\n return layerInfos[layerInfoId];\r\n }\r\n\r\n const newLeayerInfo = layerInfos;\r\n const response = await axios(layerConfig.url + \"/?f=json\");\r\n newLeayerInfo[layerInfoId] = response.data;\r\n setLayerInfos(newLeayerInfo);\r\n\r\n return response.data;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n {!loading && searchParam && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {resultFeatures.length ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n","import { IFeatureGroup } from \"@geo/js\";\r\nimport i18next from \"i18next\";\r\nimport React from \"react\";\r\nimport { useSearchContext } from \"../../Contexts/SearchContext\";\r\nimport { FeatureGroup } from \"./FeatureGroup\";\r\nimport { SearchHelp } from \"./SearchHelp\";\r\nimport \"./SearchResults.scss\";\r\n\r\nexport const SearchResults = (): JSX.Element => {\r\n const { searchParam, loading, error, notification, searchHelp, resultFeatures } = useSearchContext();\r\n\r\n const HelpSection = (): JSX.Element =>\r\n searchParam.length === 0 || searchHelp ? (\r\n \r\n ) : !loading ? (\r\n
\r\n {i18next.t(\"searchPanel.noResults\")}\r\n
\r\n ) : null;\r\n\r\n const ResultSection = (): JSX.Element => (\r\n <>\r\n {notification ?
{notification}
: null}\r\n
\r\n {resultFeatures.map((featureGroup: IFeatureGroup) =>\r\n featureGroup.features.length ? (\r\n \r\n ) : null\r\n )}\r\n
\r\n \r\n );\r\n\r\n const hasResults = resultFeatures.length && resultFeatures.some((res) => res.features.length);\r\n\r\n return (\r\n
\r\n {error ? (\r\n
{error}
\r\n ) : !resultFeatures || searchHelp ? (\r\n \r\n ) : hasResults ? (\r\n \r\n ) : !loading ? (\r\n
{i18next.t(\"searchPanel.noResults\")}
\r\n ) : loading ? (\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n","import { Feature } from \"ol\";\r\nimport { ISingleRowList } from \"../Coordinates/DropdownList\";\r\nimport { IFeatureGroup, Layer as GeoJSLayer, IFeature as GeoJSFeature } from \"@geo/js\";\r\n\r\nexport interface ILayerConfig {\r\n id: string;\r\n label: string;\r\n displayExpression: string;\r\n query: string;\r\n queryHelp: string;\r\n validationRegEx: string;\r\n url: string;\r\n serviceId: string;\r\n layerInfo: any; //__esri.LayerInfo;\r\n queryNonLocale?: string;\r\n type?: string;\r\n minResultCount: number;\r\n}\r\n\r\nexport const getLayerConfig = (serviceId: string, layerId: number, layers) => {\r\n if (serviceId === null || layerId === null) {\r\n return;\r\n }\r\n\r\n const serviceConfig = getServiceConfig(serviceId, layers);\r\n if (!serviceConfig || !serviceConfig.searchLayers) {\r\n return;\r\n }\r\n\r\n const sameLayerConfigs = serviceConfig.searchLayers.filter((layerConfig) => layerConfig.id === layerId);\r\n\r\n return sameLayerConfigs.length ? sameLayerConfigs[0] : undefined;\r\n};\r\n\r\nexport const getServiceConfig = (serviceId: string, layers) => {\r\n const sameIdServiceConfigs = layers.filter((layer) => layer.id === serviceId);\r\n\r\n return sameIdServiceConfigs.length ? sameIdServiceConfigs[0] : undefined;\r\n};\r\n\r\nexport const getSearchGroupConfig = (config, groupId: string | number) => {\r\n if (!config.search || !config.search.groups || !config.search.groups.length) {\r\n return;\r\n }\r\n\r\n const sameSearchGroups = config.search.groups.filter((group) => group.id === groupId);\r\n\r\n return sameSearchGroups.length ? sameSearchGroups[0] : undefined;\r\n};\r\n\r\nexport const getGroupSearchConfigs = (config, searchGroupId: ISingleRowList) => {\r\n const searchGroupConfig = getSearchGroupConfig(config, searchGroupId.value);\r\n\r\n if (!searchGroupConfig) {\r\n return null;\r\n }\r\n\r\n const searchConfigs = [];\r\n\r\n searchGroupConfig.services.forEach((searchService) => {\r\n const layerConfigs = [];\r\n\r\n searchService.layerIds.forEach((layerId) => {\r\n const layerConfig = getLayerConfig(searchService.serviceId, layerId, config.layers);\r\n layerConfig && layerConfigs.push(layerConfig);\r\n });\r\n\r\n if (layerConfigs.length) {\r\n searchConfigs.push({\r\n serviceId: searchService.serviceId,\r\n layerConfigs\r\n });\r\n }\r\n });\r\n\r\n return searchConfigs;\r\n};\r\n\r\nexport const replaceFieldsWithValues = (feature: Feature, layerInfo, text?: string): string => {\r\n if (!text) {\r\n return;\r\n }\r\n const replacedWithValues = text.replace(/(\\[(?:\\[??[^\\[]*?\\]))/g, (matched: string) => {\r\n const fieldName = matched.replace(\"[\", \"\").replace(\"]\", \"\");\r\n const fieldInfo = layerInfo.fields.find((field) => field.name === fieldName);\r\n if (fieldInfo && fieldInfo.domain && fieldInfo.domain.type === \"coded-value\") {\r\n const codedValue = fieldInfo.domain.codedValues.find((cv) => cv.code === feature.get(fieldName));\r\n return codedValue && codedValue.name;\r\n }\r\n return feature.get(fieldName);\r\n });\r\n\r\n return replacedWithValues\r\n .replace(/undefined/g, \"\")\r\n .replace(/null/g, \"\")\r\n .replace(/{}/g, \"\");\r\n};\r\n\r\nexport const sortFeatures = (features: Feature[]): Feature[] =>\r\n features.length === 1\r\n ? features\r\n : features.sort((a, b) => {\r\n const valueA = a.get(\"NAMELV\");\r\n const valueB = b.get(\"NAMELV\");\r\n\r\n return valueA === undefined && valueB === undefined\r\n ? 0\r\n : valueA === undefined\r\n ? 1\r\n : valueB === undefined\r\n ? -1\r\n : typeof valueA === \"string\" || valueA instanceof String\r\n ? valueA.localeCompare(valueB, \"lv\", { sensitivity: \"accent\" })\r\n : valueA < valueB\r\n ? -1\r\n : valueA > valueB\r\n ? 1\r\n : 0;\r\n });\r\n\r\nexport const extendFeatures = (features: Feature[], layerConfig: ILayerConfig): any[] => {\r\n const extendedFeatures = [];\r\n const layer = new GeoJSLayer(layerConfig, layerConfig.layerInfo, layerConfig.serviceId, layerConfig.id);\r\n const displayExpression = layer.getDisplayExpression();\r\n\r\n features.map(async (feature) => {\r\n const label = replaceFieldsWithValues(feature, layerConfig.layerInfo, displayExpression);\r\n try {\r\n const newFeature = new Feature();\r\n newFeature.setGeometry(feature.getGeometry());\r\n newFeature.setProperties(feature.getProperties());\r\n newFeature.setProperties({\r\n serviceId: layerConfig.serviceId,\r\n layerId: layerConfig.id,\r\n layerInfo: layerConfig.layerInfo,\r\n hiddenFieldNames: null,\r\n label\r\n });\r\n extendedFeatures.push(newFeature);\r\n } catch (error) {\r\n console.error(error);\r\n return;\r\n }\r\n });\r\n\r\n return extendedFeatures;\r\n};\r\n\r\nexport const createFeatureGroup = (layerConfig: ILayerConfig, features: GeoJSFeature[], sortGroup?: boolean) =>\r\n ({\r\n features,\r\n id: layerConfig.id,\r\n label: layerConfig.label,\r\n sortGroup\r\n } as IFeatureGroup);\r\n","import React from \"react\";\r\nimport { SearchGroup } from \"./SearchGroup\";\r\nimport { SearchResults } from \"./SearchResults\";\r\nimport { SearchInput } from \"./SearchInput\";\r\nimport { useSearchContext } from \"../../Contexts/SearchContext\";\r\nimport \"./SearchWidget.scss\";\r\n\r\nexport const SearchWidget = (): JSX.Element => {\r\n const { groups } = useSearchContext();\r\n return (\r\n
\r\n {groups?.length ? (\r\n <>\r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n","import { getGroupSearchConfigs, getServiceConfig, sortFeatures } from \"./SearchUtils\";\r\nimport {\r\n replaceDiacritics,\r\n Config as GeoJSConfig,\r\n Query,\r\n Layer as GeoJSLayer,\r\n IFeature as GeoJSFeature\r\n} from \"@geo/js\";\r\nimport { IGroup } from \"../../Contexts/SearchContext\";\r\nimport { executeQuery } from \"../rest\";\r\nimport { Feature } from \"ol\";\r\n\r\nexport interface IQueryData {\r\n url: string;\r\n layer: any;\r\n searchParam: string;\r\n}\r\n\r\nexport const buildQueries = (searchText: string, config, selectedGroup: IGroup, onError): IQueryData[] => {\r\n const searchConfig = new GeoJSConfig(config.search ? config.search.groups : config);\r\n const searchConfigs = getGroupSearchConfigs(config, selectedGroup);\r\n const queryConfigs = searchConfig.getValidQueryConfigs(searchText, searchConfigs);\r\n\r\n (!queryConfigs || queryConfigs.length === 0) && onError();\r\n\r\n return queryConfigs.map((service) => {\r\n const serviceLayer = getServiceConfig(service.serviceId, config.layers);\r\n return serviceLayer && prepareQuery(service, searchText, serviceLayer);\r\n });\r\n};\r\n\r\nconst prepareQuery = (service, searchParam: string, serviceLayer): IQueryData =>\r\n service.layerConfigs.map((layer) => {\r\n const url =\r\n serviceLayer.type === \"FeatureLayer\" || serviceLayer.type === \"ClusterLayer\"\r\n ? serviceLayer.url + \"/\" + serviceLayer.layerId\r\n : serviceLayer.url + \"/\" + layer.id;\r\n\r\n layer.url = url;\r\n layer.serviceId = service.serviceId;\r\n\r\n return {\r\n url,\r\n layer,\r\n searchParam\r\n };\r\n });\r\n\r\nexport const executeOracleTextSearchQuery = async (\r\n layerUrl: string,\r\n layerConfig,\r\n searchParam: string\r\n): Promise => {\r\n const queryResults: Feature[] = [].concat(\r\n ...(await Promise.all([\r\n getQueryResults(layerUrl, buildQuery(layerConfig, searchParam)),\r\n getQueryResults(layerUrl, buildQuery(layerConfig, searchParam, true)),\r\n getQueryResults(layerUrl, buildQuery(layerConfig, searchParam, false, true)),\r\n getQueryResults(layerUrl, buildQuery(layerConfig, searchParam, true, true))\r\n ]))\r\n );\r\n const merged: Feature[] = [];\r\n queryResults.map((r) => !merged.some((m) => m.get(\"OBJECTID\") === r.get(\"OBJECTID\")) && merged.push(r));\r\n\r\n return merged;\r\n};\r\n\r\nexport const executeDefaultQuery = async (layerUrl: string, layerConfig, searchParam: string) => {\r\n const query = buildQuery(layerConfig, searchParam);\r\n try {\r\n return await getQueryResults(layerUrl, query);\r\n } catch (e) {\r\n console.log(e);\r\n return;\r\n }\r\n};\r\n\r\nconst getQueryResults = async (layerUrl: string, query) => {\r\n const results = await executeQuery(layerUrl, query);\r\n return sortFeatures(results);\r\n};\r\n\r\nconst buildQuery = (layerConfig, searchParam: string, isNonLocale?: boolean, isPartial?: boolean) => {\r\n const queryJS = new Query();\r\n const searchText = isNonLocale ? replaceDiacritics(searchParam) : searchParam;\r\n const params = queryJS.prepareParam(searchText, layerConfig.type ? layerConfig.type : false, isPartial);\r\n let layerQuery = isNonLocale ? layerConfig.queryNonLocale : layerConfig.query;\r\n layerQuery = (layerQuery ? layerQuery : \"\").replace(new RegExp(\"\\\\{0\\\\}\", \"g\"), params.toUpperCase());\r\n const query = {\r\n f: \"json\",\r\n returnGeometry: true,\r\n outFields: \"*\",\r\n where: layerQuery\r\n };\r\n return query;\r\n};\r\n","import Feature, { FeatureLike } from \"ol/Feature\";\r\nimport { Point } from \"ol/geom\";\r\nimport { Circle as CircleStyle, Fill, Icon, RegularShape, Stroke, Style, Text } from \"ol/style\";\r\nimport { IClusterConfig, IVectorLayerStyles } from \"../config\";\r\nimport { replaceFieldsWithCalculations, replaceFieldsWithValues } from \"../utils\";\r\n\r\nexport const getClusterSymbol = (isHovered: boolean, count: number, clusterConfig?: IClusterConfig): Style => {\r\n const style = clusterConfig.clusterStyle;\r\n const enlargeFactor = Number.isFinite(clusterConfig.enlargeOnHoverFactor) ? clusterConfig.enlargeOnHoverFactor : 2;\r\n const radius = (style?.radius || 14) - 1 + Math.log2(count) + (isHovered ? enlargeFactor : 0);\r\n return new Style({\r\n // image: new Icon({\r\n // src: createImage(radius, count, style),\r\n // imgSize: [radius * 2, radius * 2]\r\n // }),\r\n image: new CircleStyle({\r\n fill: new Fill({\r\n color: style?.fillColor || \"#dd5e47\"\r\n }),\r\n stroke: new Stroke({\r\n color: style?.strokeColor || \"#ffffff\",\r\n width: style?.strokeWidth || 2\r\n }),\r\n radius\r\n }),\r\n text: new Text({\r\n text: count.toString(),\r\n font: \"bold \" + ((style?.textSize || 14) + (isHovered ? enlargeFactor * 0.5 : 0)) + \"px sans-serif\",\r\n fill: new Fill({\r\n color: style?.textColor || \"#ffffff\"\r\n })\r\n })\r\n });\r\n};\r\n\r\nexport const getSimpleSymbol = (feature: FeatureLike, styles?: IVectorLayerStyles): Style | Style[] => {\r\n const type = feature.getGeometry().getType();\r\n\r\n return type === \"Polygon\" || type === \"MultiPolygon\"\r\n ? getPolygonStyle(feature, styles)\r\n : type === \"LineString\" || type === \"MultiLineString\"\r\n ? getLineStyle(feature, styles)\r\n : type === \"Point\"\r\n ? getPointStyle(feature, styles)\r\n : null;\r\n};\r\n\r\nconst getPolygonStyle = (feature: FeatureLike, styles?: IVectorLayerStyles) => {\r\n const isHovered = feature.get(\"HOVERED\");\r\n\r\n return new Style({\r\n stroke: new Stroke({\r\n color: styles?.polygon?.strokeColor || [221, 92, 70, 1],\r\n width: styles?.polygon?.strokeWidth || 3\r\n }),\r\n fill: new Fill({\r\n color: styles?.polygon?.fillColor || [221, 92, 70, 0.5]\r\n }),\r\n text:\r\n styles?.polygon?.label || styles?.text\r\n ? new Text({\r\n font: isHovered ? \"bold 13px sans-serif\" : styles?.text?.font || \"bold 12px sans-serif\",\r\n fill: new Fill({\r\n color: styles?.text?.fillColor || \"white\"\r\n }),\r\n stroke: new Stroke({\r\n color: styles?.text?.strokeColor || \"white\",\r\n width: styles?.text?.strokeWidth || 2\r\n }),\r\n text: replaceFieldsWithCalculations(feature, styles?.text?.text),\r\n overflow: styles?.text?.overflow,\r\n padding: styles?.text?.padding,\r\n backgroundFill: styles?.text?.backgroundFill\r\n ? new Fill({ color: styles?.text?.backgroundFill?.color })\r\n : null\r\n })\r\n : undefined\r\n });\r\n};\r\n\r\nconst getLineStyle = (feature: FeatureLike, styles?: IVectorLayerStyles) => {\r\n const isHovered = feature.get(\"HOVERED\");\r\n const featureStyles = [\r\n new Style({\r\n stroke: new Stroke({\r\n color: styles?.polyline?.strokeColor || \"white\",\r\n width: styles?.polyline?.strokeWidth || 1.5\r\n }),\r\n text: styles?.polyline?.label\r\n ? new Text({\r\n font: isHovered ? \"bold 13px sans-serif\" : \"bold 12px sans-serif\",\r\n placement: \"line\",\r\n // maxAngle: Math.PI / 6,\r\n // padding: [0, 50, 0, 50],\r\n fill: new Fill({\r\n color: \"white\"\r\n }),\r\n stroke: new Stroke({\r\n color: styles?.polyline?.strokeColor || \"white\",\r\n width: 2\r\n }),\r\n text: replaceFieldsWithValues(feature, styles?.polyline?.label)\r\n })\r\n : undefined\r\n })\r\n ];\r\n if (isHovered) {\r\n featureStyles.push(\r\n new Style({\r\n stroke: new Stroke({\r\n color: styles?.polyline?.highlightStyle?.strokeColor || \"white\",\r\n width: styles?.polyline?.highlightStyle?.strokeWidth || 10\r\n })\r\n })\r\n );\r\n }\r\n return featureStyles;\r\n};\r\n\r\nconst getPointStyle = (featureLike: FeatureLike, styles?: IVectorLayerStyles) => {\r\n const includedFeat = featureLike.get(\"features\");\r\n const feature = includedFeat ? includedFeat[0] : featureLike;\r\n const isHovered = feature.get(\"HOVERED\");\r\n let src = styles?.icon;\r\n\r\n const featureStyles: Style[] = [];\r\n\r\n if (styles?.icons) {\r\n const val = feature.get(styles.icons.field);\r\n const srcVals = styles.icons.values.find((value) => value[val]);\r\n src = srcVals && srcVals[val];\r\n }\r\n featureStyles.push(\r\n new Style({\r\n image: src\r\n ? new Icon({ src, width: 32, height: 32 })\r\n : new CircleStyle({\r\n fill: new Fill({\r\n color: styles?.point?.fillColor || \"#dd5e47\"\r\n }),\r\n stroke: new Stroke({\r\n color: styles?.point?.strokeColor || \"white\",\r\n width: styles?.point?.strokeWidth || 1.5\r\n }),\r\n radius: styles?.point?.radius || 7\r\n })\r\n })\r\n );\r\n if (styles?.labels && styles?.labels.length) {\r\n addLabels(feature, featureStyles, styles);\r\n }\r\n if (isHovered) {\r\n featureStyles.push(\r\n new Style({\r\n image: new CircleStyle({\r\n fill: new Fill({\r\n color: styles?.point?.highlightStyle?.fillColor || \"#dd5e47\"\r\n }),\r\n stroke: new Stroke({\r\n color: styles?.point?.highlightStyle?.strokeColor || \"white\",\r\n width: styles?.point?.highlightStyle?.strokeWidth || 10\r\n }),\r\n radius: styles?.point?.highlightStyle?.radius || 7\r\n })\r\n })\r\n );\r\n }\r\n return featureStyles;\r\n};\r\n\r\nconst addLabels = (feature: Feature, featureStyles: Style[], styles: IVectorLayerStyles) => {\r\n //@ts-ignore\r\n const mapScale = document.mapScale;\r\n const labelsForScale = styles.labels?.find((hl) => hl.maxScale >= mapScale && mapScale > hl.minScale);\r\n\r\n if (labelsForScale) {\r\n const labelCoords = feature.get(\"LABELCOORDS\");\r\n\r\n featureStyles.push(\r\n ...labelsForScale.labels.map((label) => {\r\n const style = new Style(parseLabelConfig(label, feature));\r\n labelCoords?.length && style.setGeometry(new Point(labelCoords));\r\n style.setZIndex(9999);\r\n return style;\r\n })\r\n );\r\n }\r\n};\r\n\r\nconst parseLabelConfig = (sourceObj, feat?: FeatureLike) => {\r\n if (typeof sourceObj !== \"object\" || sourceObj === null) {\r\n return sourceObj;\r\n }\r\n\r\n const newObj = Array.isArray(sourceObj) ? [] : {};\r\n for (const key in sourceObj) {\r\n if (Object.hasOwnProperty.call(sourceObj, key)) {\r\n key === \"fill\"\r\n ? (newObj[key] = new Fill(parseLabelConfig(sourceObj[key])))\r\n : key === \"backgroundFill\"\r\n ? (newObj[key] = new Fill(parseLabelConfig(sourceObj[key])))\r\n : key === \"stroke\"\r\n ? (newObj[key] = new Stroke(parseLabelConfig(sourceObj[key])))\r\n : key === \"labelText\"\r\n ? (newObj[\"text\"] = new Text(parseLabelConfig(sourceObj[key], feat)))\r\n : key === \"text\"\r\n ? (newObj[\"text\"] = replaceFieldsWithValues(feat, sourceObj[key]))\r\n : key === \"regularShape\"\r\n ? (newObj[\"image\"] = new RegularShape(parseLabelConfig(sourceObj[key])))\r\n : (newObj[key] = parseLabelConfig(sourceObj[key]));\r\n }\r\n }\r\n\r\n return newObj;\r\n};\r\n","import { Fill, Style, Text, RegularShape } from \"ol/style\";\r\nimport { Geometry, LineString, Point } from \"ol/geom\";\r\nimport { getLength, getArea } from \"ol/sphere\";\r\n\r\nconst labelStyle = new Style({\r\n text: new Text({\r\n font: \"14px Calibri,sans-serif\",\r\n fill: new Fill({\r\n color: \"rgba(255, 255, 255, 1)\"\r\n }),\r\n backgroundFill: new Fill({\r\n color: \"rgba(0, 0, 0, 0.7)\"\r\n }),\r\n padding: [3, 3, 3, 3],\r\n textBaseline: \"bottom\",\r\n offsetY: -15\r\n }),\r\n image: new RegularShape({\r\n radius: 8,\r\n points: 3,\r\n angle: Math.PI,\r\n displacement: [0, 10],\r\n fill: new Fill({\r\n color: \"rgba(0, 0, 0, 0.7)\"\r\n })\r\n })\r\n});\r\n\r\nconst segmentLabelStyle = new Style({\r\n text: new Text({\r\n font: \"12px Calibri,sans-serif\",\r\n fill: new Fill({\r\n color: \"rgba(255, 255, 255, 1)\"\r\n }),\r\n backgroundFill: new Fill({\r\n color: \"rgba(0, 0, 0, 0.4)\"\r\n }),\r\n padding: [2, 2, 2, 2],\r\n textBaseline: \"bottom\",\r\n offsetY: -12\r\n }),\r\n image: new RegularShape({\r\n radius: 6,\r\n points: 3,\r\n angle: Math.PI,\r\n displacement: [0, 8],\r\n fill: new Fill({\r\n color: \"rgba(0, 0, 0, 0.4)\"\r\n })\r\n })\r\n});\r\n\r\nconst segmentStyles = [segmentLabelStyle];\r\n\r\nexport const addMeasurements = (feature, styles: Style[]): Style[] => {\r\n const geometry = feature.getGeometry();\r\n const type = geometry.getType();\r\n let point, label, line;\r\n if (type) {\r\n if (type === \"Polygon\") {\r\n point = geometry.getInteriorPoint();\r\n label = formatArea(geometry);\r\n line = new LineString(geometry.getCoordinates()[0]);\r\n const perimeter = formatLength(geometry);\r\n feature.set(\"AREA\", label);\r\n feature.set(\"LENGTH\", perimeter);\r\n } else if (type === \"LineString\") {\r\n point = new Point(geometry.getLastCoordinate());\r\n label = formatLength(geometry);\r\n line = geometry;\r\n feature.set(\"LENGTH\", label);\r\n }\r\n }\r\n if (line) {\r\n let count = 0;\r\n line.forEachSegment(function (a, b) {\r\n const segment = new LineString([a, b]);\r\n const label = formatLength(segment);\r\n if (segmentStyles.length - 1 < count) {\r\n segmentStyles.push(segmentLabelStyle.clone());\r\n }\r\n const segmentPoint = new Point(segment.getCoordinateAt(0.5));\r\n segmentStyles[count].setGeometry(segmentPoint);\r\n segmentStyles[count].getText().setText(label);\r\n styles.push(segmentStyles[count]);\r\n count++;\r\n });\r\n }\r\n if (label) {\r\n labelStyle.setGeometry(point);\r\n labelStyle.getText().setText(label);\r\n styles.push(labelStyle);\r\n }\r\n\r\n return styles;\r\n};\r\n\r\nexport const formatLength = (line: Geometry): string => {\r\n const length = getLength(line);\r\n let output;\r\n if (length >= 1000) {\r\n output = Math.round((length / 1000) * 100) / 100 + \" km\";\r\n } else {\r\n output = Math.round(length * 100) / 100 + \" m\";\r\n }\r\n return output;\r\n};\r\n\r\nexport const formatArea = (polygon: Geometry): string => {\r\n const area = getArea(polygon);\r\n let output;\r\n if (area >= 100000000) {\r\n output = Math.round((area / 1000000) * 100) / 100 + \" km\\xB2\";\r\n } else if (area >= 10000) {\r\n output = Math.round((area / 10000) * 100) / 100 + \" ha\";\r\n } else {\r\n output = Math.round(area * 100) / 100 + \" m\\xB2\";\r\n }\r\n return output;\r\n};\r\n","import { Circle as CircleStyle, Fill, RegularShape, Stroke, Style, Text } from \"ol/style\";\r\nimport { MultiPoint, LineString, Polygon } from \"ol/geom\";\r\nimport { DrawType } from \"../enums\";\r\nimport { Feature } from \"ol\";\r\nimport { IIdentifyStyles } from \"../IUserConfig\";\r\nimport { FeatureLike } from \"ol/Feature\";\r\nimport { addMeasurements } from \"./measureSymbols\";\r\n\r\nconst yellow = [255, 255, 0, 0.8];\r\n\r\nconst vertice = (color) =>\r\n new CircleStyle({\r\n radius: 6,\r\n fill: new Fill({\r\n color\r\n }),\r\n stroke: new Stroke({\r\n color: \"white\",\r\n width: 1.5\r\n })\r\n });\r\n\r\nconst verticeStyle = (color: string) =>\r\n new Style({\r\n image: vertice(color)\r\n });\r\n\r\nconst fill = (color: string) =>\r\n new Fill({\r\n color: hex2rgba(color, 0.2)\r\n });\r\n\r\nconst fillStyle = (color: string, dash?: boolean) =>\r\n new Style({\r\n fill: fill(color),\r\n stroke: stroke(color, dash)\r\n });\r\n\r\nconst stroke = (color: string, dash?: boolean) =>\r\n new Stroke({\r\n color,\r\n width: 3,\r\n lineDash: dash ? [10, 10] : null\r\n });\r\n\r\nconst lineStyle = (color: string, dash?: boolean) => new Style({ stroke: stroke(color, dash) });\r\n\r\nconst middlePointsStyle = (color: string, drawType?: DrawType.Polygon | DrawType.Polyline) =>\r\n new Style({\r\n image: vertice(color),\r\n geometry: (feature) => {\r\n if (drawType === DrawType.Polyline) {\r\n return new MultiPoint(((feature as Feature).getGeometry() as LineString).getCoordinates());\r\n }\r\n const coords = (feature.getGeometry() as Polygon).getCoordinates();\r\n return new MultiPoint(coords.length === 1 ? coords[0] : (coords as []));\r\n }\r\n });\r\n\r\nconst pointStyle = (color: string, dash: boolean) =>\r\n new Style({\r\n image: new CircleStyle({\r\n fill: new Fill({ color: \"white\" }),\r\n stroke: new Stroke({\r\n color,\r\n width: dash ? 2 : 3,\r\n lineDash: dash ? [3, 3] : null\r\n }),\r\n radius: dash ? 6 : 5\r\n })\r\n });\r\n\r\nconst pointLabelStyle = (text: string, color) =>\r\n new Style({\r\n text: new Text({\r\n font: 'normal normal bold 14px \"Mulish\"',\r\n text,\r\n fill: new Fill({ color: \"white\" }),\r\n stroke: stroke(color),\r\n backgroundFill: fill(color),\r\n backgroundStroke: new Stroke({\r\n color,\r\n width: 2,\r\n lineDash: [10, 10]\r\n }),\r\n padding: [3, 3, 3, 3],\r\n textBaseline: \"middle\"\r\n })\r\n });\r\n\r\nconst textLabelStyle = (color: string, text: string, editMode: boolean) =>\r\n editMode\r\n ? pointLabelStyle(text, color)\r\n : new Style({\r\n text: new Text({\r\n font: 'normal normal bold 14px \"Mulish\"',\r\n text,\r\n textBaseline: \"middle\",\r\n fill: new Fill({ color }),\r\n stroke: stroke(\"white\")\r\n })\r\n });\r\n\r\nconst hex2rgba = (hex: string, alpha = 1): number[] => {\r\n const [r, g, b] = hex.match(/\\w\\w/g).map((x) => parseInt(x, 16));\r\n return [r, g, b, alpha];\r\n};\r\n\r\nexport const getDrawingSymbol = (\r\n feature: Feature | FeatureLike,\r\n noMeasurements: boolean,\r\n type: DrawType,\r\n color?: string,\r\n isSelect?: boolean,\r\n isModify?: boolean\r\n): Style | Style[] => {\r\n const styles: Style[] = [];\r\n if (type === DrawType.Polygon) {\r\n if (isModify) {\r\n styles.push(verticeStyle(color));\r\n } else if (isSelect) {\r\n styles.push(verticeStyle(color), fillStyle(color, true), middlePointsStyle(color, type));\r\n } else {\r\n styles.push(fillStyle(color));\r\n }\r\n } else if (type === DrawType.Polyline) {\r\n if (isModify) {\r\n styles.push(verticeStyle(color));\r\n } else if (isSelect) {\r\n styles.push(verticeStyle(color), lineStyle(color, true), middlePointsStyle(color, type));\r\n } else {\r\n styles.push(lineStyle(color));\r\n }\r\n } else if (type === DrawType.PointText) {\r\n const description = feature.get(\"DESCRIPTION\");\r\n const text = description ? description.toString() : \"\";\r\n (isModify || isSelect) && !text.length ? styles.push(pointStyle(color, false)) : styles.push(new Style());\r\n !noMeasurements && styles.push(textLabelStyle(color, text, isModify || isSelect));\r\n } else {\r\n styles.push(pointStyle(color, isModify || isSelect));\r\n }\r\n\r\n return noMeasurements || type === DrawType.PointText ? styles : addMeasurements(feature, styles);\r\n};\r\n\r\nexport const getHighLightSymbol = (feature: Feature, styles: IIdentifyStyles): Style => {\r\n const type = feature.getGeometry().getType();\r\n\r\n if (type === \"Polygon\" || type === \"MultiPolygon\") {\r\n return new Style({\r\n fill: new Fill({\r\n color: styles?.polygon?.color || [255, 255, 0, 0.15]\r\n }),\r\n stroke: new Stroke({\r\n color: styles?.polygon?.outline?.color || yellow,\r\n width: styles?.polygon?.outline?.width || 3\r\n })\r\n });\r\n } else if (type === \"LineString\" || type === \"MultiLineString\") {\r\n return new Style({\r\n stroke: new Stroke({\r\n color: styles?.polyline?.color || yellow,\r\n width: styles?.polyline?.width || 5\r\n // lineDash: isNaturalRoad && [4, 4]\r\n })\r\n });\r\n } else if (type === \"Point\") {\r\n return new Style({\r\n image: new CircleStyle({\r\n fill: new Fill({\r\n color: styles?.point?.color || \"white\"\r\n }),\r\n stroke: new Stroke({\r\n color: styles?.point?.outline?.color || yellow,\r\n width: styles?.point?.outline?.width || 2\r\n }),\r\n radius: styles?.point?.size || 12\r\n })\r\n });\r\n }\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { ILayerState } from \"../config\";\r\nimport { Checkbox } from \"../../Elements/Checkbox\";\r\nimport { GroupVisibility } from \"../enums\";\r\n\r\nexport interface IGroupVisibilityButtonProps {\r\n layer: ILayerState;\r\n onClick: (id: string, state: GroupVisibility) => void;\r\n}\r\n\r\ninterface IGroupVisibilityCount {\r\n visible: number;\r\n hidden: number;\r\n total: number;\r\n}\r\n\r\nexport const GroupVisibilityButton = ({ layer, onClick }: IGroupVisibilityButtonProps): JSX.Element => {\r\n const getNextGroupVisibilityState = (current: GroupVisibility) => {\r\n switch (current) {\r\n case GroupVisibility.VISIBLE:\r\n return GroupVisibility.HIDDEN;\r\n case GroupVisibility.HIDDEN:\r\n return GroupVisibility.VISIBLE;\r\n case GroupVisibility.MIXED:\r\n return GroupVisibility.VISIBLE;\r\n }\r\n };\r\n const countSublayersByVisibility = (layer: ILayerState): IGroupVisibilityCount => {\r\n const group = {\r\n total: 0,\r\n visible: 0,\r\n hidden: 0\r\n };\r\n\r\n if (!layer.sublayers || !layer.sublayers.length) {\r\n return group;\r\n }\r\n\r\n group.total = layer.sublayers.length;\r\n\r\n for (const subLayer of layer.sublayers) {\r\n if (subLayer.visible) {\r\n group.visible++;\r\n } else {\r\n group.hidden++;\r\n }\r\n\r\n const subLayerVisibility = countSublayersByVisibility(subLayer);\r\n group.total += subLayerVisibility.total;\r\n group.visible += subLayerVisibility.visible;\r\n group.hidden += subLayerVisibility.hidden;\r\n }\r\n\r\n return group;\r\n };\r\n\r\n const onClickHandler = (e?: React.MouseEvent) => {\r\n onClick(layer.id, getNextGroupVisibilityState(state));\r\n e && e.stopPropagation();\r\n };\r\n\r\n const groupVisibility = countSublayersByVisibility(layer);\r\n let state =\r\n groupVisibility.visible > 0 && groupVisibility.hidden > 0 ? GroupVisibility.MIXED : GroupVisibility.HIDDEN;\r\n if (groupVisibility.total === groupVisibility.visible && layer.visible) {\r\n state = GroupVisibility.VISIBLE;\r\n }\r\n\r\n return (\r\n \r\n onClickHandler()}\r\n />\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { ILayerState } from \"../config\";\r\nimport { LayerAction } from \"../enums\";\r\n\r\nexport interface IMenuImageProps {\r\n layer: ILayerState;\r\n hideLegend: boolean;\r\n group: boolean;\r\n onToggle: (id: string, layerAction: LayerAction) => void;\r\n tocIcon?: string;\r\n}\r\n\r\nexport const MenuImage = ({ layer, hideLegend, group, tocIcon, onToggle }: IMenuImageProps): JSX.Element => {\r\n if (hideLegend) {\r\n return ;\r\n } else if (layer.error) {\r\n return ;\r\n } else if ((!group && layer.image && layer.image.length > 0) || tocIcon) {\r\n return (\r\n
\r\n {tocIcon ? : }\r\n
\r\n );\r\n } else if (group || layer.sublayers) {\r\n return (\r\n onToggle(layer.id, LayerAction.Expand)}\r\n />\r\n );\r\n }\r\n return null;\r\n};\r\n","import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { MenuImage } from \"./MenuImage\";\r\nimport { GroupVisibilityButton } from \"./GroupVisibilityButton\";\r\nimport { SubLegends } from \"./SubLegends\";\r\nimport { ILayerState, ILayer } from \"../config\";\r\nimport { ToggleSwitch } from \"../../Elements/ToggleSwitch\";\r\nimport { GroupVisibility, LayerAction } from \"../enums\";\r\nimport { SubIcons } from \"./SubIcons\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { ReactNode } from \"react\";\r\n\r\nexport interface IMenuItemProps {\r\n layer: ILayerState;\r\n onToggle: (id: string, layerAction: LayerAction) => void;\r\n onClickLayerMetadata: (\r\n e: React.MouseEvent,\r\n layerConfig: ILayer | undefined,\r\n layer: ILayerState\r\n ) => void;\r\n onClickGroupVisibility: (id: string, state: GroupVisibility) => void;\r\n buttonNode?: ReactNode;\r\n}\r\n\r\nexport const MenuItem = ({\r\n layer,\r\n onToggle,\r\n onClickLayerMetadata,\r\n onClickGroupVisibility,\r\n buttonNode\r\n}: IMenuItemProps): JSX.Element => {\r\n const { configA } = useMapContext();\r\n\r\n const hasLegend = (layer: ILayerState): boolean => {\r\n return configA.layers.some((element) => {\r\n return layer.id.replace(/_/g, \"\") === element.id.replace(/_/g, \"\") && element.hideLegend;\r\n });\r\n };\r\n\r\n const SubLayers = ({ layers }: { layers: ILayerState[] }) => (\r\n \r\n {layers.map((layer: ILayerState) => (\r\n onClickGroupVisibility(id, state)}\r\n >\r\n ))}\r\n \r\n );\r\n\r\n const layerConfig = configA.layers.find((config) => config.id === layer.rootLayerId || config.id === layer.layerId);\r\n const hasGroupVisibilityButton = layer.expanded && layer.sublayers && layer.sublayers.length && layer.first;\r\n const hideLegend = hasLegend(layer);\r\n const hasSublevel = !hideLegend && layer.expanded;\r\n const tocIcons =\r\n layerConfig &&\r\n layerConfig.tocOptions &&\r\n layerConfig.tocOptions.find(\r\n (iConfig) =>\r\n iConfig &&\r\n (iConfig.layerId.toString() === layer.layerId.toString() ||\r\n (layerConfig.layerId && iConfig.layerId.toString() === layerConfig.layerId.toString()))\r\n )?.icon;\r\n const tocLabels =\r\n layerConfig &&\r\n layerConfig.tocOptions &&\r\n layerConfig.tocOptions.find(\r\n (iConfig) =>\r\n iConfig &&\r\n (iConfig.layerId.toString() === layer.layerId.toString() ||\r\n (layerConfig.layerId && iConfig.layerId.toString() === layerConfig.layerId.toString()))\r\n )?.label;\r\n const hasMultipleIcons = tocIcons && Array.isArray(tocIcons);\r\n const isGrouped = hasMultipleIcons || (!tocIcons && layer.image && layer.image.length > 1);\r\n const hideToggle =\r\n layerConfig &&\r\n layerConfig.tocOptions &&\r\n layerConfig.tocOptions.find((iConfig) => iConfig.layerId.toString() === layer.layerId && iConfig)?.hideToggle;\r\n\r\n return (\r\n <>\r\n {layer.title ? (\r\n \r\n \r\n \r\n onToggle(layer.id, LayerAction.Expand)}\r\n >\r\n {layer.title}\r\n
\r\n {!hideToggle && !layer.hideVisibility ? (\r\n onToggle(layer.id, LayerAction.View)}\r\n >\r\n ) : null}\r\n onClickLayerMetadata(e, layerConfig, layer)}\r\n className={classnames(\"esri-icon-description layer-metadata-btn\", {\r\n \"hidden-element\": !(\r\n layerConfig &&\r\n layerConfig.showMetadataLayers &&\r\n layerConfig.showMetadataLayers.find((layerId) => String(layerId) === layer.layerId)\r\n )\r\n })}\r\n >
\r\n {hasGroupVisibilityButton ? (\r\n onClickGroupVisibility(id, state)}\r\n >\r\n ) : null}\r\n {buttonNode ? buttonNode : null}\r\n
\r\n {hasSublevel && isGrouped && layer.image && !tocIcons ? (\r\n \r\n ) : hasMultipleIcons ? (\r\n \r\n ) : null}\r\n {hasSublevel && layer.sublayers && layer.sublayers.length && !tocIcons ? (\r\n \r\n ) : null}\r\n \r\n ) : (\r\n <>\r\n {layer.sublayers &&\r\n layer.sublayers.length &&\r\n layer.sublayers.map((layer: ILayerState) => (\r\n \r\n onClickGroupVisibility(id, state)\r\n }\r\n >\r\n ))}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\n\r\nexport interface ISubLegendsProps {\r\n shown?: boolean;\r\n expanded?: boolean;\r\n icons: string[];\r\n labels?: string[];\r\n}\r\n\r\nexport const SubIcons = ({ shown, expanded, icons, labels }: ISubLegendsProps): JSX.Element => {\r\n return (\r\n \r\n {icons.map((icon, i) => {\r\n return (\r\n
  • \r\n
    \r\n
    \r\n \r\n
    \r\n {labels[i]}\r\n
    \r\n
  • \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { ILayerImage } from \"../config\";\r\n\r\nexport interface ISubLegendsProps {\r\n shown?: boolean;\r\n images: ILayerImage[];\r\n}\r\n\r\nexport const SubLegends = ({ shown, images }: ISubLegendsProps) => {\r\n return (\r\n \r\n {images.map((image) => {\r\n return (\r\n
  • \r\n
    \r\n
    \r\n \r\n
    \r\n {image.label}\r\n
    \r\n
  • \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { ILayerState } from \"../config\";\r\nimport { MenuItem } from \"./MenuItem\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { useLayersContext } from \"../../Contexts/LayersContext\";\r\nimport { GroupVisibility } from \"../enums\";\r\nimport \"./TocWidget.scss\";\r\n\r\nexport const TocWidget = ({ mainToc }: { mainToc: boolean }): JSX.Element => {\r\n const { layerStates } = useMapContext();\r\n const { setGroupVisibility, onToggle, showLayerMetadata } = useLayersContext();\r\n\r\n return (\r\n
    \r\n
      \r\n {layerStates.length ? (\r\n layerStates\r\n .filter((ls) => (mainToc ? !ls.showInMapDownloadWidget : ls.showInMapDownloadWidget))\r\n .map((layer: ILayerState) => (\r\n \r\n setGroupVisibility(id, state)\r\n }\r\n >\r\n ))\r\n ) : (\r\n
      {i18next.t(\"isLoading\")}
      \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n","import { boundrieTypes } from \"../config\";\r\n\r\nexport function parseStyle(styles: string | undefined) {\r\n if (!styles) {\r\n return {};\r\n }\r\n return styles\r\n .split(\";\")\r\n .filter((style) => style.split(\":\")[0] && style.split(\":\")[1])\r\n .map((style) => [\r\n style\r\n .split(\":\")[0]\r\n .trim()\r\n .replace(/-./g, (c) => c.substr(1).toUpperCase()),\r\n style.split(\":\").slice(1).join(\":\").trim()\r\n ])\r\n .reduce(\r\n (styleObj, style) => ({\r\n ...styleObj,\r\n [style[0]]: style[1]\r\n }),\r\n {}\r\n );\r\n}\r\n\r\nexport function checkScale(currentScale: number, minScale?: number, maxScale?: number) {\r\n let minValid = false;\r\n let maxValid = false;\r\n if (!minScale) {\r\n minScale = 0;\r\n }\r\n if (!maxScale) {\r\n maxScale = 0;\r\n }\r\n\r\n if (currentScale <= minScale || minScale === 0) {\r\n minValid = true;\r\n }\r\n if (currentScale >= maxScale || maxScale === 0) {\r\n maxValid = true;\r\n }\r\n\r\n if (minValid && maxValid) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function replaceParam(paramName: string, paramValue: string) {\r\n let url = window.location.href;\r\n const pattern = new RegExp(\"\\\\b(\" + paramName + \"=).*?(&|#|$)\");\r\n if (url.search(pattern) >= 0) {\r\n return url.replace(pattern, \"$1\" + paramValue + \"$2\");\r\n }\r\n url = url.replace(/[?#]$/, \"\");\r\n return url + (url.indexOf(\"?\") > 0 ? \"&\" : \"?\") + paramName + \"=\" + paramValue;\r\n}\r\n\r\nexport function inIframe() {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n}\r\n\r\nexport function isMobile() {\r\n return navigator.maxTouchPoints > 0;\r\n}\r\n\r\nexport function isExpandAllowed(rule: boundrieTypes | undefined) {\r\n if (!rule || rule === \"none\" || (rule === \"iframe\" && !inIframe())) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n","import * as React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { ToolbarButton } from \"./ToolbarButton\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { ToolbarSelect } from \"./ToolbarSelect\";\r\nimport { replaceParam } from \"../Toc/helpers\";\r\nimport { Widget } from \"../enums\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport classNames from \"classnames\";\r\nimport \"./Toolbar.scss\";\r\n\r\nexport const Toolbar = (): JSX.Element => {\r\n const { language } = useAppContext();\r\n const { configA, setWidget, drawType } = useMapContext();\r\n\r\n const [expanded, setExpanded] = useState(true);\r\n\r\n useEffect(() => {\r\n !expanded && setWidget(undefined);\r\n }, [expanded]);\r\n\r\n const onClickMenu = useCallback(() => {\r\n setExpanded(!expanded);\r\n }, [expanded]);\r\n\r\n const onChangeLanguage = useCallback(\r\n (lang: string) => {\r\n if (lang.toLowerCase() !== language) {\r\n // localStorage.setItem(\"GeoLiteLanguage\", lang);\r\n window.location.href = replaceParam(\"lang\", lang);\r\n }\r\n },\r\n [language]\r\n );\r\n\r\n const widgets = configA && configA.widgets;\r\n const hasLayersWidget = widgets && (widgets.LayerList || widgets.LayerList === undefined);\r\n const hasSearchWidget = widgets && (widgets.Search || widgets.Search === undefined);\r\n const hasLanguageWidget = widgets && (widgets.Language || widgets.Language === undefined);\r\n const hasPrintWidget = widgets && (widgets.Print || widgets.Print === undefined);\r\n const hasDrawWidget = widgets && (widgets.Sketch || widgets.Sketch === undefined);\r\n const hasBookmarksWidget = widgets && (widgets.Bookmarks || widgets.Bookmarks === undefined);\r\n const hasConversionWidget = widgets && (widgets.CoordinateConversion || widgets.CoordinateConversion === undefined);\r\n const hasDataDownloadWidget = widgets && widgets.DataDownload;\r\n const hasHelpButton = configA && configA.customerRow?.helpLink;\r\n const hasMapDownloadWidget = widgets && widgets.MapDownload;\r\n\r\n const hasToolbar =\r\n hasLayersWidget ||\r\n hasSearchWidget ||\r\n hasDrawWidget ||\r\n hasBookmarksWidget ||\r\n hasConversionWidget ||\r\n hasDataDownloadWidget ||\r\n hasHelpButton ||\r\n hasMapDownloadWidget;\r\n\r\n return (\r\n <>\r\n {hasToolbar ? (\r\n
    \r\n \r\n {expanded && (\r\n
    \r\n {hasLayersWidget ? (\r\n setWidget(Widget.Toc)}\r\n title={i18next.t(\"toolBar.toc\")}\r\n />\r\n ) : null}{\" \"}\r\n {hasSearchWidget ? (\r\n setWidget(Widget.Search)}\r\n title={i18next.t(\"search\")}\r\n />\r\n ) : null}\r\n {hasPrintWidget ? (\r\n setWidget(Widget.Print)}\r\n title={i18next.t(\"toolBar.print\")}\r\n />\r\n ) : null}\r\n {hasConversionWidget ? (\r\n setWidget(Widget.Convert)}\r\n title={i18next.t(\"coordinates.coordinateConversion\")}\r\n />\r\n ) : null}\r\n {hasDrawWidget ? (\r\n setWidget(Widget.Draw)}\r\n title={i18next.t(\"toolBar.sketch\")}\r\n />\r\n ) : null}\r\n {hasBookmarksWidget ? (\r\n setWidget(Widget.Bookmarks)}\r\n title={i18next.t(\"toolBar.bookmarks\")}\r\n />\r\n ) : null}\r\n {hasDataDownloadWidget ? (\r\n setWidget(Widget.DataDownload)}\r\n title={i18next.t(\"toolBar.dataDownload\")}\r\n />\r\n ) : null}\r\n {hasMapDownloadWidget ? (\r\n setWidget(Widget.MapDownload)}\r\n title={i18next.t(\"toolBar.mapDownload\")}\r\n />\r\n ) : null}\r\n {hasHelpButton ? (\r\n setWidget(Widget.Help)}\r\n title={i18next.t(\"toolBar.help\")}\r\n />\r\n ) : null}\r\n {hasLanguageWidget ? (\r\n \r\n ) : null}\r\n
    \r\n )}\r\n
    \r\n ) : null}\r\n \r\n );\r\n};\r\n","import classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport \"./ToolbarButton.scss\";\r\n\r\nexport interface IToolbarButton {\r\n iconClassName: string;\r\n className?: string;\r\n disabled?: boolean;\r\n title?: string;\r\n iconCharacter?: string;\r\n onClick: () => void;\r\n}\r\n\r\nexport const ToolbarButton = ({\r\n iconClassName,\r\n onClick,\r\n className,\r\n disabled,\r\n title,\r\n iconCharacter\r\n}: IToolbarButton): JSX.Element => (\r\n
    \r\n {iconCharacter ? {iconCharacter} : }\r\n
    \r\n);\r\n","import * as React from \"react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./ToolbarSelect.scss\";\r\n\r\nexport interface IToolbarSelect {\r\n value: string;\r\n values: string[];\r\n onChange: (value: string) => void;\r\n title?: string;\r\n}\r\n\r\nexport const ToolbarSelect = ({ value, values, onChange, title }: IToolbarSelect): JSX.Element => {\r\n const { widget, setWidget } = useMapContext();\r\n const [expanded, setExpanded] = useState(false);\r\n\r\n useEffect(() => {\r\n widget && setExpanded(false);\r\n }, [widget]);\r\n\r\n const onClick = () => {\r\n setWidget(null);\r\n setExpanded(!expanded);\r\n };\r\n const onSelect = (val: string) => {\r\n val.toLowerCase() !== value.toLowerCase() && onChange(val);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {value}\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {values.map((val) => (\r\n
    onSelect(val)}>\r\n {val.toUpperCase()}\r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Overlay } from \"ol\";\r\nimport { getMap } from \"../GeoLiteMap\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport { replaceFieldsWithValues } from \"../utils\";\r\nimport \"./Tooltip.scss\";\r\n\r\nexport const Tooltip = (): JSX.Element => {\r\n const { hoveredFeature } = useMapContext();\r\n const [title, setTitle] = useState();\r\n const [subtitle, setSubtitle] = useState();\r\n const [content, setContent] = useState();\r\n const [style, setStyle] = useState({});\r\n\r\n const overlayRef = useRef();\r\n\r\n useEffect(() => {\r\n overlayRef.current = new Overlay({\r\n element: document.getElementById(\"tooltip\"),\r\n offset: [0, -20],\r\n positioning: \"bottom-center\",\r\n className: \"popup-overlay\"\r\n });\r\n getMap().addOverlay(overlayRef.current);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (hoveredFeature && hoveredFeature.evt) {\r\n overlayRef.current.setPosition(hoveredFeature.evt);\r\n\r\n const tooltipTemplate = hoveredFeature.tooltipTemplate;\r\n setTitle(replaceFieldsWithValues(hoveredFeature.feature, tooltipTemplate.title, hoveredFeature.fieldInfo));\r\n setSubtitle(\r\n replaceFieldsWithValues(hoveredFeature.feature, tooltipTemplate.subtitle, hoveredFeature.fieldInfo)\r\n );\r\n setContent(\r\n replaceFieldsWithValues(hoveredFeature.feature, tooltipTemplate.content, hoveredFeature.fieldInfo)\r\n );\r\n\r\n setStyle({\r\n backgroundColor: tooltipTemplate.backgroundColor || \"darkgrey\",\r\n color: tooltipTemplate.textColor || \"white\"\r\n });\r\n }\r\n }, [hoveredFeature]);\r\n\r\n return (\r\n
    \r\n {hoveredFeature ? (\r\n
    \r\n
    \r\n
    \r\n {title &&
    }\r\n {subtitle && (\r\n
    \r\n )}\r\n {content && (\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n );\r\n};\r\n","import React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { WmsInput } from \"./WmsInput\";\r\nimport { WmsLayers } from \"./WmsLayers\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\nimport \"./WmsAddition.scss\";\r\n\r\nexport const WmsAddition = (): JSX.Element => {\r\n const { wmsState } = useMapContext();\r\n return (\r\n \r\n \r\n {wmsState.length ? : null}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport i18next from \"i18next\";\r\nimport { PopupButton } from \"../../Elements/PopupButton\";\r\nimport { WidgetInput } from \"../Widget/WidgetInput\";\r\nimport { useWmsContext } from \"../../Contexts/WmsContext\";\r\n\r\nexport const WmsInput = (): JSX.Element => {\r\n const { url, setUrl, onAddUrl, loading } = useWmsContext();\r\n\r\n return (\r\n
    \r\n setUrl(e.target.value)}\r\n />\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { useWmsContext } from \"../../Contexts/WmsContext\";\r\nimport { MenuItem } from \"../Toc/MenuItem\";\r\nimport { ILayerState } from \"../config\";\r\nimport { LayerAction } from \"../enums\";\r\nimport { useMapContext } from \"../../Contexts/MapContext\";\r\n\r\nexport const WmsLayers = (): JSX.Element => {\r\n const { wmsState } = useMapContext();\r\n const { onToggle, onRemoveLayer } = useWmsContext();\r\n\r\n const listRef = useRef();\r\n\r\n useEffect(() => adjustHeight(), [wmsState]);\r\n\r\n const adjustHeight = () => {\r\n let delta = 0;\r\n const accordionElements = document.getElementById(\"widget-popup\").getElementsByClassName(\"accordion-item\");\r\n for (let i = 0; i < accordionElements.length - 1; i++) {\r\n delta += accordionElements[i].scrollHeight;\r\n }\r\n const maxHeight = document.body.scrollHeight - delta;\r\n\r\n listRef.current.style.maxHeight = maxHeight + \"px\";\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {wmsState &&\r\n wmsState.map((layer) => (\r\n onToggle(layer, id, layerAction)}\r\n onClickLayerMetadata={() => console.log(\"showLayerMetadata\")}\r\n onClickGroupVisibility={(id: string, state: any) => {\r\n // setGroupVisibility(id, state);\r\n }}\r\n buttonNode={\r\n
    onRemoveLayer(layer.id)}>\r\n \r\n
    \r\n }\r\n >\r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n","import React, { useCallback, useRef, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport \"./WidgetInput.scss\";\r\n\r\nexport interface IWidgetInput {\r\n classname: string;\r\n label?: string;\r\n value: string;\r\n onChange: (e) => void;\r\n placeholder?: string;\r\n readOnly?: boolean;\r\n defaultSelected?: boolean;\r\n isPasswordField?: boolean;\r\n maxLength?: number;\r\n}\r\n\r\nexport const WidgetInput = ({\r\n classname,\r\n label,\r\n value,\r\n onChange,\r\n placeholder,\r\n readOnly,\r\n defaultSelected,\r\n isPasswordField,\r\n maxLength\r\n}: IWidgetInput): JSX.Element => {\r\n const inputRef = useRef();\r\n\r\n const [visible, setVisible] = useState(!isPasswordField);\r\n\r\n if (defaultSelected) {\r\n setTimeout(() => {\r\n // inputRef.current.selectionStart = 0;\r\n inputRef.current.focus();\r\n inputRef.current.select();\r\n }, 0);\r\n }\r\n\r\n const onToggle = useCallback(() => setVisible(!visible), [visible]);\r\n\r\n const onChangeValue = (val) => {\r\n if (val.target.value.length > maxLength) {\r\n inputRef.current.classList.add(\"invalid\");\r\n return;\r\n }\r\n inputRef.current.classList.remove(\"invalid\");\r\n onChange(val);\r\n };\r\n\r\n return (\r\n
    \r\n {label ? : null}\r\n \r\n {maxLength ? {maxLength - value.length} : null}\r\n {isPasswordField ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { PropsWithChildren } from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { PopupBody } from \"../../Popups/Popup\";\r\nimport \"./WidgetPopup.scss\";\r\n\r\ninterface IWidgetPopupProps {\r\n hidden?: boolean;\r\n displayLayerIds?: string[];\r\n}\r\n\r\nexport const WidgetPopup = (props: PropsWithChildren): JSX.Element => {\r\n const { isMobile } = useAppContext();\r\n\r\n return !props.hidden ? (\r\n
    \r\n {props.children ? props.children : null}\r\n
    \r\n ) : null;\r\n};\r\n","import classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { PropsWithChildren } from \"react\";\r\nimport \"./WidgetToolbar.scss\";\r\n\r\ninterface IWidgetToolbarProps {\r\n hidden?: boolean;\r\n displayLayerIds?: string[];\r\n className?: string;\r\n}\r\n\r\nexport const WidgetToolbar = (props: PropsWithChildren): JSX.Element => {\r\n return (\r\n
    {props.children ? props.children : null}
    \r\n );\r\n};\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport \"./WidgetToolbarButton.scss\";\r\n\r\nexport interface IWidgetToolbarButton {\r\n iconClass: string;\r\n buttonClass?: string;\r\n title: string;\r\n onClick: (e) => void;\r\n}\r\n\r\nexport const WidgetToolbarButton = ({ iconClass, buttonClass, onClick, title }: IWidgetToolbarButton): JSX.Element => (\r\n
    \r\n \r\n
    \r\n);\r\n","import { OSM, TileWMS, WMTS, XYZ } from \"ol/source\";\r\nimport TileGrid from \"ol/tilegrid/TileGrid\";\r\nimport WMTSTileGrid from \"ol/tilegrid/WMTS\";\r\nimport { Layer, Tile as TileLayer } from \"ol/layer\";\r\nimport { mapTileGrid, wmtsTileGrid } from \"./config\";\r\nimport { getMap } from \"./GeoLiteMap\";\r\n\r\n// one scale unit (if scale=1000, resolution=2.6458386250105836)\r\nconst lodResolutionUnit = 0.00026458386250105836;\r\n\r\nconst appid = encodeURI(window.location.host + window.location.pathname);\r\n\r\nexport const getBasemapLayers = (config): Layer[] => {\r\n const configResolutions = config.mapLods && config.mapLods.map((lod) => lod.resolution);\r\n const defaultTileGrid = mapTileGrid;\r\n configResolutions && (defaultTileGrid.resolutions = configResolutions);\r\n const tileGrid = new TileGrid(defaultTileGrid);\r\n\r\n return config.basemaps\r\n .map((b) => {\r\n if (b.type === \"TileLayer\") {\r\n const olLayer = new TileLayer({\r\n source: new XYZ({\r\n url: b.url + \"/tile/{z}/{y}/{x}\",\r\n projection: b.projection,\r\n tileGrid:\r\n b?.maxScale >= 0 || b.maxLodLevel\r\n ? getReducedTileGrid(\r\n defaultTileGrid,\r\n b.maxScale,\r\n b.maxLodLevel || defaultTileGrid.resolutions.length\r\n )\r\n : tileGrid,\r\n crossOrigin: b.crossOrigin || \"Anonymous\",\r\n attributions: b.copyright\r\n }),\r\n visible: true,\r\n properties: { id: b.id },\r\n zIndex: 0\r\n });\r\n olLayer.setProperties(b);\r\n return olLayer;\r\n }\r\n if (b.type === \"WMS\") {\r\n const olLayer = new TileLayer({\r\n source: new TileWMS({\r\n url: b.url,\r\n params: b.params,\r\n projection: b.projection,\r\n serverType: b.serverType,\r\n crossOrigin: b.crossOrigin || \"Anonymous\",\r\n tileGrid,\r\n attributions: b.copyright,\r\n hidpi: false,\r\n // https://manidarbi.lvm.lv/browse/GDEV-4137\r\n tileLoadFunction: (imageTile, src) => {\r\n //@ts-ignore\r\n imageTile.getImage().src = src + \"&appid=\" + appid;\r\n }\r\n }),\r\n properties: { id: b.id },\r\n visible: true,\r\n zIndex: 0\r\n });\r\n olLayer.setProperties(b);\r\n return olLayer;\r\n }\r\n if (b.type === \"WMTS\") {\r\n const olLayer = new TileLayer({\r\n source: new WMTS({\r\n attributions: b.copyright,\r\n url: b.url,\r\n layer: b.layers[0].layers[0],\r\n matrixSet: \"LKS_LVM\",\r\n format: b.layers[0].imagetype,\r\n projection: b.projection,\r\n tileGrid: new WMTSTileGrid(wmtsTileGrid),\r\n style: b.layers[0].style || \"raster\",\r\n wrapX: true,\r\n crossOrigin: b.crossOrigin || \"Anonymous\",\r\n // https://manidarbi.lvm.lv/browse/GDEV-4137\r\n tileLoadFunction: (imageTile, src) => {\r\n //@ts-ignore\r\n imageTile.getImage().src = src + \"&appid=\" + appid;\r\n }\r\n }),\r\n properties: { id: b.id },\r\n visible: true,\r\n zIndex: 0\r\n });\r\n olLayer.setProperties(b);\r\n return olLayer;\r\n }\r\n // This is to test OSM source map straight from OSRM servers\r\n if (b.type === \"OSM\") {\r\n const olLayer = new TileLayer({\r\n source: new OSM(),\r\n properties: { id: b.id },\r\n zIndex: 0\r\n });\r\n olLayer.setProperties(b);\r\n return olLayer;\r\n }\r\n })\r\n .filter((b) => b);\r\n};\r\n\r\nexport const switchBasemap = (baseMap: string): void => {\r\n getMap()\r\n .getLayers()\r\n .getArray()\r\n .map((layer) => layer.get(\"isBaseMap\") && layer.setVisible(layer.get(\"id\") === baseMap));\r\n};\r\n\r\nexport const getReducedTileGrid = (\r\n defaultTileGrid: {\r\n origin: number[];\r\n tileSize: number[];\r\n resolutions: number[];\r\n },\r\n maxScale = 0,\r\n maxLodLevel: number\r\n): TileGrid => {\r\n const resolutions = [];\r\n defaultTileGrid.resolutions.map(\r\n (r, i) => r >= maxScale * lodResolutionUnit && i < maxLodLevel && resolutions.push(r) // TODO ņemt vērā arī minScale=250000 un noņemt no sākuma\r\n );\r\n\r\n return new TileGrid({\r\n origin: defaultTileGrid.origin,\r\n tileSize: defaultTileGrid.tileSize,\r\n resolutions\r\n });\r\n};\r\n","import Feature, { FeatureLike } from \"ol/Feature\";\r\nimport { Point } from \"ol/geom\";\r\nimport { getPointResolution } from \"ol/proj\";\r\nimport { IScaleDepLabel } from \"./config\";\r\nimport { getMap } from \"./GeoLiteMap\";\r\nimport { replaceFieldsWithValues } from \"./utils\";\r\n\r\nexport const clusterExpand = (clones: FeatureLike[], features: FeatureLike[], center: number[], duration?: number) =>\r\n clones.map((f, i) => animatePoint(f, center, (features[i].getGeometry() as Point).getCoordinates(), duration));\r\n\r\nexport const clusterCircularExpand = (features: Feature[], center: number[], duration, radius = 16) => {\r\n const view = getMap().getView();\r\n const pointResolution = getPointResolution(view.getProjection(), view.getResolution(), center, \"m\");\r\n\r\n const pointRadius = Math.floor(radius * pointResolution);\r\n const count = features.length;\r\n const circumference = 2.1 * pointRadius * count;\r\n const distanceFromCenter = circumference / (2 * Math.PI);\r\n const minDistance = Math.floor(2.5 * radius * pointResolution);\r\n const distance = distanceFromCenter > minDistance ? distanceFromCenter : minDistance;\r\n const angle = (2 * Math.PI) / count;\r\n\r\n //@ts-ignore\r\n const scale = document.mapScale;\r\n const labelsConfigForScale = features[0]\r\n .get(\"layerData\")\r\n ?.vectorStyles?.labels?.find((hl: IScaleDepLabel) => hl.maxScale >= scale && scale > hl.minScale);\r\n\r\n const isLabelsCircular = features.some(\r\n (f) => f.get(\"layerData\")?.cluster?.hoverAnimation?.circularExpandLabelsCircular\r\n );\r\n\r\n features.map((f, i) => {\r\n const currentAngle = angle * (i + 1);\r\n let labelSize: number[];\r\n let labelTargetCoordinates: number[];\r\n if (isLabelsCircular) {\r\n labelSize = f.get(\"LABELSIZEPX\") || getLabelSizePx(f, labelsConfigForScale);\r\n labelTargetCoordinates = calculateLabelCoordinates(\r\n center,\r\n distance * 1.8,\r\n currentAngle,\r\n Math.floor(labelSize[0] * pointResolution),\r\n Math.floor(labelSize[1] * pointResolution)\r\n );\r\n }\r\n\r\n animatePoint(\r\n f,\r\n center,\r\n calculatePointCoordinates(center, distance, currentAngle),\r\n duration,\r\n labelTargetCoordinates\r\n );\r\n });\r\n};\r\n\r\nexport const animatePoint = (feature, startCoords, targetCoords, duration = 200, labelTargetCoords = null) => {\r\n const startTime = new Date().getTime();\r\n\r\n function animate() {\r\n const currentTime = new Date().getTime();\r\n const progress = Math.min(1, (currentTime - startTime) / duration);\r\n const deltaX = (targetCoords[0] - startCoords[0]) * progress;\r\n const deltaY = (targetCoords[1] - startCoords[1]) * progress;\r\n const newPosition = [startCoords[0] + deltaX, startCoords[1] + deltaY];\r\n\r\n feature.getGeometry().setCoordinates(newPosition);\r\n\r\n if (labelTargetCoords) {\r\n const dX = (labelTargetCoords[0] - startCoords[0]) * progress;\r\n const dY = (labelTargetCoords[1] - startCoords[1]) * progress;\r\n const newPosition = [startCoords[0] + dX, startCoords[1] + dY];\r\n feature.set(\"LABELCOORDS\", newPosition, true);\r\n }\r\n\r\n if (progress < 1) {\r\n requestAnimationFrame(animate);\r\n }\r\n }\r\n\r\n requestAnimationFrame(animate);\r\n};\r\n\r\nconst calculatePointCoordinates = (center, distance, angleRad): number[] => [\r\n center[0] + distance * Math.cos(angleRad),\r\n center[1] + distance * Math.sin(angleRad)\r\n];\r\nconst calculateLabelCoordinates = (center, distance, angleRad, labelWidth, labelHeight): number[] => {\r\n const deltaX = -0.5 * (1 - Math.cos(angleRad)) * labelWidth;\r\n const deltaY = 0.5 + 0.5 * Math.sin(angleRad) * labelHeight;\r\n\r\n return [center[0] + distance * Math.cos(angleRad) + deltaX, center[1] + distance * Math.sin(angleRad) + deltaY];\r\n};\r\n\r\nconst getTextLabelSize = (text, font) => {\r\n const hiddenLabel = document.getElementById(\"hiddenLabel\");\r\n hiddenLabel.style.font = font;\r\n hiddenLabel.innerHTML = text?.replaceAll(\"\\n\", \"
    \");\r\n\r\n return [hiddenLabel.offsetWidth + 7, hiddenLabel.offsetHeight + 6]; // 7 add padding summed from both sides\r\n};\r\n\r\nconst getLabelSizePx = (feature: Feature, labelsConfigForScale) => {\r\n const text = replaceFieldsWithValues(feature, labelsConfigForScale?.labels[0]?.labelText?.text);\r\n const labelSizePx = getTextLabelSize(text, labelsConfigForScale?.labels[0]?.labelText?.font);\r\n feature.set(\"LABELSIZEPX\", labelSizePx, true);\r\n\r\n return labelSizePx;\r\n};\r\n","import { Vector as VectorSource, Cluster as ClusterSource } from \"ol/source\";\r\nimport { Layer, Vector as VectorLayer } from \"ol/layer\";\r\nimport { getMap } from \"./GeoLiteMap\";\r\nimport { getAllFeatures } from \"./rest\";\r\nimport { getClusterSymbol, getSimpleSymbol } from \"./Symbols/clusterSymbols\";\r\nimport { Feature } from \"ol\";\r\nimport { IFeatureLayerData } from \"./interfaces\";\r\nimport { MultiPolygon, Polygon } from \"ol/geom\";\r\n\r\nconst zIndex = 1000;\r\n\r\nexport const createClusters = (map, configA, clusterSource: ClusterSource): Layer[] => {\r\n const clusterLayers = configA.layers.filter((l) => l.type === \"ClusterLayer\");\r\n if (!clusterLayers?.length) {\r\n return;\r\n }\r\n const clusterSharerLayerId = clusterLayers.find((cl) => cl.clusterSharingLayer)?.clusterSharingLayer;\r\n const sharingLayerConfig = clusterLayers.find((cl) => cl.id === clusterSharerLayerId);\r\n if (!sharingLayerConfig) {\r\n return;\r\n }\r\n\r\n clusterSource.set(\"sharingLayerConfig\", sharingLayerConfig);\r\n\r\n addClusterFeatures(map, clusterLayers, clusterSource);\r\n};\r\n\r\nconst addClusterFeatures = async (map, clusterLayers, clusterSource) => {\r\n const allClusterFeatures = await Promise.all([\r\n ...clusterLayers.reverse().map(async (l, i) => {\r\n const clusterMinScaleThreshold = l.cluster?.clusterMinScale || 0;\r\n const url = l.layerId !== undefined ? l.url + \"/\" + l.layerId : l.url;\r\n\r\n const mapLayer = map\r\n .getLayers()\r\n .getArray()\r\n .find((ml) => ml.get(\"id\") === l.id);\r\n\r\n const features = await getAllFeatures(url);\r\n\r\n if (features.length) {\r\n const layerData: IFeatureLayerData = {\r\n id: l.id,\r\n layerId: l.layerId,\r\n cluster:\r\n l.cluster ||\r\n clusterLayers.find((configLayer) => configLayer.id === l.clusterSharingLayer).cluster,\r\n vectorStyles: l.vectorStyles,\r\n identify: l.identify\r\n };\r\n addLayerData(features, layerData);\r\n }\r\n if (mapLayer) {\r\n (mapLayer as VectorLayer).setSource(clusterSource);\r\n mapLayer.on(\"change:visible\", (e) => onChangeVisibility(e, features, clusterSource));\r\n }\r\n return mapLayer.getVisible() ? features : [];\r\n })\r\n ]);\r\n\r\n clusterSource.getSource().addFeatures(allClusterFeatures.flat());\r\n\r\n addClusterLayer(clusterSource);\r\n};\r\n\r\nconst onChangeVisibility = (e, features: Feature[], clusterSource: ClusterSource) => {\r\n if (e.target.getVisible()) {\r\n clusterSource.getSource().addFeatures(features);\r\n return;\r\n }\r\n const restFeatures = clusterSource\r\n .getSource()\r\n .getFeatures()\r\n .filter((clf) => !features.find((f) => f.get(\"OBJECTID\") === clf.get(\"OBJECTID\")));\r\n clusterSource.getSource().clear();\r\n clusterSource.getSource().addFeatures(restFeatures);\r\n};\r\n\r\nconst addClusterLayer = (clusterSource) => {\r\n const sharingLayerConfig = clusterSource.get(\"sharingLayerConfig\");\r\n const vectorStyles = sharingLayerConfig.vectorStyles;\r\n const clusterMinScaleThreshold = sharingLayerConfig.cluster.clusterMinScale || 0;\r\n clusterSource.setDistance(sharingLayerConfig.cluster.distance || 200);\r\n clusterSource.setMinDistance(sharingLayerConfig.cluster.minDistance || 0);\r\n const olLayer = new VectorLayer({\r\n properties: { id: \"mainCluster\" },\r\n source: clusterSource,\r\n // minResolution: l.minResolution,\r\n // maxResolution: l.maxResolution,\r\n zIndex: 5000,\r\n opacity: 1,\r\n style: (clusterFeature) => {\r\n const clusterFeatures = clusterFeature.get(\"features\");\r\n return clusterFeatures?.length > 1\r\n ? getClusterSymbol(clusterFeature.get(\"HOVERED\"), clusterFeatures.length, sharingLayerConfig.cluster)\r\n : getSimpleSymbol(clusterFeature, vectorStyles);\r\n }\r\n });\r\n document.addEventListener(\"moveend\", (e: CustomEvent) => {\r\n clusterSource.setDistance(\r\n e.detail <= clusterMinScaleThreshold ? 0.00001 : sharingLayerConfig.cluster.distance || 200\r\n );\r\n vectorStyles.labels && olLayer.changed();\r\n });\r\n\r\n getMap().addLayer(olLayer);\r\n};\r\n\r\nexport const addLayerData = (features: Feature[], layerData: IFeatureLayerData) => {\r\n for (const feature of features) {\r\n feature.set(\"layerData\", layerData, true);\r\n }\r\n};\r\n\r\nexport const createClusterSource = (): ClusterSource =>\r\n new ClusterSource({\r\n source: new VectorSource(),\r\n geometryFunction: (feature: any) => {\r\n const geometry = feature.getGeometry();\r\n const type = geometry.getType();\r\n return type === \"Polygon\"\r\n ? (geometry as Polygon).getInteriorPoint()\r\n : type === \"MultiPolygon\"\r\n ? (geometry as MultiPolygon).getInteriorPoints().getPoint(1)\r\n : geometry;\r\n }\r\n });\r\n","import { Condition, Input, LayerType } from \"./enums\";\r\nimport axios, { AxiosResponse } from \"axios\";\r\nimport {\r\n ILayerSearch,\r\n IAppEndpoint,\r\n IUserConfig,\r\n IUserLayer,\r\n ICustomConfig,\r\n IEndpoints,\r\n IPrint,\r\n IRewrite,\r\n IUserBasemap,\r\n ICustomerRow,\r\n IExport,\r\n IHead,\r\n IIdentifyStyles,\r\n IIdentifyTolerance,\r\n IImport,\r\n ISearchGroups,\r\n IZoomObject,\r\n IIdentifyOrder\r\n} from \"./IUserConfig\";\r\nimport { getSubLayers } from \"./rest\";\r\nimport { ColorLike } from \"ol/colorlike\";\r\nimport { getUrlParam } from \"./utils\";\r\n\r\nexport interface IConfigOLD {\r\n default: IDefault;\r\n geoLocation?: ILocation;\r\n search: ISearch;\r\n reCaptchaSiteKey: string;\r\n upload: IUploadConfig;\r\n print: IPrintConfig;\r\n email: IEmailConfig;\r\n geometryService: IGeometryServiceConfig;\r\n}\r\nexport interface IDefault {\r\n center: number[];\r\n extentSize: number[];\r\n viewExtent: number[];\r\n zoom: number;\r\n minZoom?: number;\r\n maxZoom?: number;\r\n projection: string;\r\n zoomToLevel: number;\r\n highLightLayerId: string;\r\n highLightSheetLayerId: string;\r\n drawingLayerId: string;\r\n highLightClusterLayerId: string;\r\n clickedClusterLayerId: string;\r\n hoverLayerId: string;\r\n colors?: string[];\r\n}\r\n\r\nexport interface ITileGrid {\r\n origin: number[];\r\n tileSize?: number[];\r\n resolutions: number[];\r\n}\r\nexport interface ILocation {\r\n geolocationOptions?: {\r\n maximumAge: number;\r\n timeout: number;\r\n enableHighAccuracy: boolean;\r\n };\r\n}\r\n\r\nexport interface IIdentify {\r\n fields: string[];\r\n conditionalFields: IIdentifyCondition[];\r\n}\r\n\r\nexport interface IIdentifyCondition {\r\n field: string;\r\n value: string | number | boolean;\r\n condition: Condition;\r\n showFields: string[];\r\n}\r\n\r\nexport interface IFormConfig {\r\n fields: IInputFieldConfig[];\r\n}\r\nexport interface IInputFieldConfig {\r\n field: string;\r\n title?: string;\r\n type?: Input;\r\n autocomplete?: string;\r\n required?: boolean;\r\n validationFn?: (value, comparator?: string) => boolean;\r\n validationErrorMessage?: string;\r\n validationComparator?: string;\r\n visibilityDeterminantField?: string;\r\n info?: string;\r\n minDateField?: string;\r\n maxDateField?: string;\r\n minDate?: string;\r\n maxDate?: string;\r\n hasError?: boolean;\r\n maxlength?: number; // max length for Text or TextArea fields\r\n}\r\nexport interface ISearch {\r\n url: string;\r\n searchLayers: ISearchLayer[];\r\n}\r\n\r\nexport interface ISearchLayer {\r\n layerId: string;\r\n field: string;\r\n}\r\n\r\nexport interface IUploadConfig {\r\n url: string;\r\n}\r\n\r\nexport interface IPrintConfig {\r\n endpoint: string;\r\n url: string;\r\n}\r\n\r\nexport interface IEmailConfig {\r\n subject: string;\r\n body: string;\r\n url: string;\r\n}\r\nexport interface IGeometryServiceConfig {\r\n endpoint: string;\r\n url: string;\r\n}\r\nexport interface ILayer {\r\n id: string;\r\n layerId: string | number;\r\n hideInToc: boolean;\r\n hideInSearch?: boolean;\r\n hideLegend: boolean;\r\n visibleLayers?: number[];\r\n type: LayerType;\r\n opacity?: number;\r\n identify?: any;\r\n maxScale?: number;\r\n minScale?: number;\r\n visible: boolean;\r\n expanded?: boolean;\r\n searchLayers?: ILayerSearch[] | null;\r\n title: string;\r\n url: string;\r\n endpoint: IAppEndpoint;\r\n layers?: string[];\r\n version?: string;\r\n imagetype?: string;\r\n copyright?: string;\r\n showMetadataLayers?: (number | string)[];\r\n showInMapDownloadWidget?: boolean;\r\n requiresLogin?: boolean;\r\n spatialReference?: number;\r\n imageConfig?: IImageConfig[];\r\n popupTemplate?: any; //__esri.PopupTemplate;\r\n tooltip?: ITooltip;\r\n tocOptions?: ITocOptions[];\r\n vectorStyles?: IVectorLayerStyles; // only for VectorLayers\r\n cluster?: IClusterConfig;\r\n declutter?: boolean; // for VectorLayer, allows symbol decluttering\r\n tileGrid?: ITileGrid; // use it, if layer has custom resolutions, origin, tileSize\r\n}\r\n\r\nexport interface IClusterConfig {\r\n distance?: number;\r\n minDistance?: number;\r\n clusterMinScale?: number;\r\n previewOnHover?: boolean;\r\n enlargeOnHoverFactor?: number;\r\n clusterStyle?: IClusterStyle;\r\n hoverAnimation?: IClusterHoverAnimation;\r\n}\r\n\r\nexport interface IClusterHoverAnimation {\r\n circularExpand: boolean;\r\n circularExpandLabelsCircular?: boolean;\r\n durationMs: number;\r\n pointRadiusPx?: number;\r\n hideLabels?: boolean;\r\n keepCircularOnClick?: boolean;\r\n}\r\n\r\nexport interface IVectorLayerStyles {\r\n icon?: string;\r\n icons?: IMultiIconStyle;\r\n point?: IGeometryStyle;\r\n polyline?: IGeometryStyle;\r\n polygon?: IGeometryStyle;\r\n text?: ITextStyle;\r\n labels?: IScaleDepLabel[]; // Openlayers style/Text parameters goes here\r\n}\r\n\r\nexport interface IScaleDepLabel {\r\n maxScale: number;\r\n minScale: number;\r\n labels: any[];\r\n}\r\nexport interface IMultiIconStyle {\r\n field: string;\r\n values: { [key: string]: string }[];\r\n}\r\nexport interface IGeometryStyle {\r\n radius?: number;\r\n fillColor?: ColorLike;\r\n strokeColor?: ColorLike;\r\n strokeWidth?: number;\r\n label?: string;\r\n highlightStyle?: IGeometryStyle;\r\n}\r\nexport interface ITextStyle {\r\n text: string;\r\n font?: string;\r\n overflow?: boolean;\r\n textSize?: number;\r\n fillColor?: ColorLike;\r\n strokeColor?: ColorLike;\r\n strokeWidth?: number;\r\n padding?: number[];\r\n backgroundFill?: any;\r\n}\r\nexport interface IClusterStyle {\r\n textColor?: ColorLike;\r\n textSize?: number;\r\n fillColor?: ColorLike;\r\n strokeColor?: ColorLike;\r\n strokeWidth?: number;\r\n radius?: number;\r\n}\r\nexport interface IImageConfig {\r\n id: number;\r\n apiProviderId: string;\r\n layerBrowseName: string;\r\n fileTableName: string;\r\n}\r\n\r\nexport interface IExtent {\r\n xmax: number;\r\n xmin: number;\r\n ymax: number;\r\n ymin: number;\r\n spatialReference: {\r\n wkid: number;\r\n };\r\n}\r\n\r\nexport interface ILod {\r\n level: number;\r\n levelValue?: string;\r\n resolution: number;\r\n scale: number;\r\n}\r\n\r\nexport interface IGeneral {\r\n startingExtent: IExtent;\r\n}\r\n\r\nexport interface IBasemap {\r\n title: string;\r\n id: string;\r\n parentId: string;\r\n childMaps: string[];\r\n opacity: number;\r\n img: string;\r\n layers: ILayer[];\r\n}\r\n\r\nexport interface IWidgets {\r\n Settings: boolean;\r\n Search: boolean;\r\n CoordinateConversion: boolean;\r\n MapDownload: boolean;\r\n Sketch: boolean;\r\n Bookmarks: boolean;\r\n Print: boolean;\r\n LayerList: boolean;\r\n GeometryExport: boolean;\r\n GeometryImport: boolean;\r\n SwipeWidgetEnabled: boolean;\r\n MapOpacityWidgetEnabled: boolean;\r\n Compass?: boolean;\r\n Basemaps?: boolean;\r\n Copyrights?: boolean;\r\n Language?: boolean;\r\n}\r\n\r\nexport interface IGeotelpa {\r\n endpoint: string;\r\n searchLayerId: string;\r\n mapDownloadMaxCount: number;\r\n helpLink: string;\r\n helpText: string;\r\n logo?: string;\r\n logo2?: string;\r\n}\r\n\r\nexport interface IPopupConfig {\r\n text: string;\r\n id: string;\r\n version: number;\r\n}\r\n\r\nexport interface IApiConfig {\r\n id: string;\r\n endpoint: IAppEndpoint;\r\n url: string;\r\n imageDetails: {\r\n height: number;\r\n thumbnailHeight: number;\r\n };\r\n}\r\n\r\nexport interface ILayerGroup {\r\n type: LayerType.LayerGroup;\r\n id: string;\r\n title: string;\r\n layers: ILayer[];\r\n layerIds?: string[];\r\n showInMapDownloadWidget?: boolean;\r\n visible?: boolean;\r\n expanded?: boolean;\r\n hideInToc?: boolean;\r\n hideInSearch?: boolean;\r\n}\r\n\r\nexport interface ITooltipTemplate {\r\n title: string;\r\n subtitle?: string;\r\n content: string;\r\n backgroundColor: number[] | string;\r\n textColor: number[] | string;\r\n}\r\n\r\nexport interface IHighlightSymbol {\r\n type: string;\r\n color: number[] | string;\r\n width: number | string;\r\n style: string;\r\n}\r\n\r\nexport interface ITooltip {\r\n tooltipTemplate: ITooltipTemplate;\r\n highlightSymbol: IHighlightSymbol;\r\n}\r\n\r\nexport interface ITocOptions {\r\n layerId: number;\r\n icon?: string | string[];\r\n label?: string | string[];\r\n hideToggle?: boolean;\r\n}\r\n\r\nexport interface ILayerState {\r\n type: string;\r\n typeName: string;\r\n rootLayerId: string | null;\r\n layerId: string;\r\n id: string;\r\n title: string;\r\n expanded: boolean;\r\n visible: boolean;\r\n first?: boolean;\r\n error?: string;\r\n image?: ILayerImage[];\r\n shown?: boolean;\r\n minScale?: number;\r\n maxScale?: number;\r\n hideLegend?: boolean;\r\n layers: string[];\r\n sublayers?: ILayerState[];\r\n hideVisibility?: boolean;\r\n position?: number;\r\n parentLayerId?: number;\r\n showInMapDownloadWidget?: boolean;\r\n}\r\n\r\nexport interface ILayerImage {\r\n image: string;\r\n label: string;\r\n}\r\nexport type boundrieTypes = \"none\" | \"always\" | \"iframe\";\r\n\r\nexport interface IConfig {\r\n popup?: IPopupConfig[];\r\n widgetOpenByDefault?: string;\r\n colapseBasemaps?: boundrieTypes;\r\n colapseMenu?: boundrieTypes;\r\n colapseCoordinates?: boundrieTypes;\r\n basemapsCollapseThreshold?: number;\r\n widgets: IWidgets;\r\n hideUiToggle?: boolean;\r\n coordinateFormats: string[];\r\n language: string;\r\n allLanguages: string[];\r\n customerRow?: ICustomerRow;\r\n head: IHead;\r\n print: IPrint;\r\n identifyGeometries: IIdentifyStyles;\r\n layersIn: IRewrite[];\r\n resultOut: IRewrite[];\r\n identifyIgnoreFields: string[];\r\n identifyTolerance?: IIdentifyTolerance;\r\n identifyOrder?: IIdentifyOrder[];\r\n location?: ILocation;\r\n endpoints: IEndpoints;\r\n layerGroups?: ILayerGroup[];\r\n layers: ILayer[];\r\n tooltips?: ITooltip[];\r\n search?: ISearchGroups;\r\n basemaps: IBasemap[];\r\n startingExtent: IExtent;\r\n mapLods?: ILod[];\r\n export?: IExport;\r\n import?: IImport;\r\n geotelpa: IGeotelpa;\r\n zoomObjects?: { [zoomObject: string]: IZoomObject };\r\n apiConfig?: IApiConfig[];\r\n dataDownloadUrl?: string;\r\n}\r\n\r\nlet layerPositions: string[];\r\nlet endpointCache;\r\nlet configCache: IConfig;\r\n\r\nexport const proxyUrl = process.env.NODE_ENV === \"development\" ? \"https://lvmkartes.lvm.lv/pubevents/beta/\" : \"\";\r\nexport const all = \"Izvēlēties vērtību\";\r\nexport const defaultOption = { name: all, code: undefined };\r\n\r\nexport const getConfig = () => loadEndpoints().then((endpoints) => loadConfig(endpoints));\r\n\r\nconst loadEndpoints = async () => {\r\n if (endpointCache) {\r\n return Promise.resolve(endpointCache);\r\n }\r\n endpointCache = await axios.get(\"config/endpoints.json?t=\" + new Date().getTime()).then((resp) => resp.data);\r\n return endpointCache;\r\n};\r\n\r\nconst loadConfig = async (endpoints) => {\r\n if (configCache) {\r\n return Promise.resolve(configCache);\r\n }\r\n configCache = await loadConfigJson().then((resp) => {\r\n console.log(\"configJSON\", resp.data);\r\n return parseConfig(resp, endpoints).then((c) => c);\r\n });\r\n return configCache;\r\n};\r\n\r\nconst loadConfigJson = async () => axios.get(\"config/config.json?t=\" + new Date().getTime());\r\n\r\nconst parseConfig = async (resp, endpoints) => {\r\n let userConfig = resp.data as IUserConfig;\r\n const customConfig = getUrlParam(\"config\");\r\n if (customConfig) {\r\n userConfig = useCustomConfig(customConfig, userConfig);\r\n }\r\n const layers = [];\r\n const layerGroups: ILayerGroup[] = [];\r\n layerPositions = [];\r\n for (const layer of userConfig.layers) {\r\n if (\r\n layer.type === LayerType.LayerGroup &&\r\n layer.layers &&\r\n layer.layers.length &&\r\n (layer.visible === undefined || layer.visible)\r\n ) {\r\n layerGroups.push({\r\n type: LayerType.LayerGroup,\r\n id: layer.id,\r\n title: layer.title,\r\n visible: layer.visible,\r\n expanded: layer.expanded,\r\n hideInToc: layer.hideInToc,\r\n hideInSearch: layer.hideInSearch,\r\n layerIds: (layer.layers as IUserLayer[]).map((l) => l.id),\r\n layers: [],\r\n showInMapDownloadWidget: layer.showInMapDownloadWidget\r\n });\r\n layers.push(...layer.layers);\r\n if (!layer.hideInToc) {\r\n layerPositions.push(layer.id);\r\n }\r\n }\r\n if (layer.type !== LayerType.LayerGroup) {\r\n layers.push(layer);\r\n if (!layer.hideInToc) {\r\n layerPositions.push(layer.id);\r\n }\r\n }\r\n }\r\n if (userConfig.search && userConfig.search.groups) {\r\n userConfig.search.groups = userConfig.search.groups.filter(\r\n (group) =>\r\n group.services.filter((service) => {\r\n const layerConfig = userConfig.layers.find((l) => {\r\n if (l.type === \"LayerGroup\" && l.layers?.length) {\r\n return (l.layers as IUserLayer[]).find((subLayer) => subLayer.id === service.serviceId);\r\n }\r\n return l.id === service.serviceId;\r\n });\r\n\r\n return layerConfig && !layerConfig.hideInSearch;\r\n }).length\r\n );\r\n }\r\n\r\n const layersParsed = await Promise.all(\r\n layers.map(async (layer): Promise => await mapUserLayerToLayer(endpoints, layer as IUserLayer))\r\n );\r\n\r\n const basemapsParsed = await Promise.all(\r\n userConfig.basemaps.map(\r\n async (basemap): Promise => await mapUserBasemapToBasemap(endpoints, basemap, userConfig.basemaps)\r\n )\r\n );\r\n\r\n const config: IConfig = {\r\n ...userConfig,\r\n language: getLanguage(userConfig.language) as string,\r\n print: getPrint(endpoints, userConfig.print),\r\n layersIn: getPrintRewrite(endpoints, userConfig.layersIn),\r\n resultOut: getPrintRewrite(endpoints, userConfig.resultOut),\r\n endpoints,\r\n apiConfig: userConfig.apiConfig && getApiConfig(endpoints, userConfig.apiConfig),\r\n mapLods: userConfig.mapLods ? userConfig.mapLods : undefined,\r\n zoomObjects: userConfig.zoomObjects ? userConfig.zoomObjects : undefined,\r\n layerGroups,\r\n layers: layersParsed,\r\n basemaps: basemapsParsed\r\n };\r\n\r\n return config;\r\n};\r\n\r\nexport const getLayerPositions = () => {\r\n return layerPositions;\r\n};\r\n\r\nconst getEndpointUrl = (endpoints: IEndpoints, endpoint: IAppEndpoint): string => {\r\n return endpoints[endpoint.endpoint] + endpoint.url;\r\n};\r\n\r\nconst getLanguage = (configLanguage: string) => {\r\n const lang = getUrlParam(\"lang\");\r\n return lang ? lang.toLowerCase() : configLanguage ? configLanguage : \"en\";\r\n};\r\n\r\nconst useCustomConfig = (customConfigName: string, userConfig: IUserConfig) => {\r\n if (!userConfig.customConfigs) {\r\n return userConfig;\r\n }\r\n const customConfig = userConfig.customConfigs.find(\r\n (config: ICustomConfig) => config.name.toLowerCase() === customConfigName.toLowerCase()\r\n );\r\n if (!customConfig) {\r\n return;\r\n }\r\n if (customConfig.basemaps) {\r\n customConfig.basemaps.forEach((configBaseMap) => {\r\n configBaseMap.visible === false &&\r\n (userConfig.basemaps = userConfig.basemaps.filter((basemap) => basemap.id !== configBaseMap.id));\r\n });\r\n }\r\n if (customConfig.layers) {\r\n customConfig.layers.forEach((configLayer) => {\r\n userConfig.layers.forEach((layer) => {\r\n if (layer.id === configLayer.id) {\r\n layer.hideInToc = configLayer.hideInToc !== undefined ? configLayer.hideInToc : layer.hideInToc;\r\n layer.hideInSearch =\r\n configLayer.hideInSearch !== undefined ? configLayer.hideInSearch : layer.hideInSearch;\r\n layer.hideLegend = configLayer.hideLegend !== undefined ? configLayer.hideLegend : layer.hideLegend;\r\n layer.visible = configLayer.visible !== undefined ? configLayer.visible : layer.visible;\r\n layer.opacity = configLayer.opacity !== undefined ? configLayer.opacity : layer.opacity;\r\n layer.identify = configLayer.identify !== undefined ? configLayer.identify : layer.identify;\r\n layer.visibleLayers =\r\n configLayer.visibleLayers !== undefined ? configLayer.visibleLayers : layer.visibleLayers;\r\n }\r\n });\r\n });\r\n }\r\n if (customConfig.widgets) {\r\n for (const [key, value] of Object.entries(customConfig.widgets)) {\r\n userConfig.widgets[key] && (userConfig.widgets[key] = value);\r\n }\r\n }\r\n if (customConfig.search) {\r\n customConfig.search.forEach((configSearch) => {\r\n configSearch.use === false &&\r\n (userConfig.search.groups = userConfig.search.groups.filter((group) => group.id !== configSearch.id));\r\n });\r\n }\r\n return userConfig;\r\n};\r\n\r\nconst mapUserLayerToLayer = async (endpoints: IEndpoints, layer: IUserLayer): Promise => {\r\n const url = layer.type !== LayerType.LayerGroup && getEndpointUrl(endpoints, layer.endpoint);\r\n\r\n const userLayer = {\r\n ...layer,\r\n opacity: layer.opacity || 1,\r\n url,\r\n searchLayers: layer.searchLayers ? layer.searchLayers : null,\r\n tileGrid: layer.tileGrid\r\n } as ILayer;\r\n\r\n if (layer.type === LayerType.MapImageLayer || layer.type === LayerType.TileLayer) {\r\n const subLayers = await getSubLayers(url);\r\n\r\n if (subLayers && subLayers.layers) {\r\n const mainLayers = subLayers.layers.filter((layer) => layer.parentLayerId === -1);\r\n mainLayers && fillSubLayers(mainLayers, subLayers.layers);\r\n\r\n userLayer.layers = mainLayers;\r\n userLayer.copyright = subLayers.copyrightText;\r\n }\r\n }\r\n\r\n return userLayer;\r\n};\r\n\r\nconst fillSubLayers = (parentLayers, allLayers) => {\r\n const parents = Array.isArray(parentLayers) ? parentLayers : [parentLayers];\r\n return (\r\n parents &&\r\n parents.map(\r\n (parent) =>\r\n (parent.sublayers = allLayers\r\n .filter((layer) =>\r\n layer.parentLayerId === parent.id\r\n ? layer.subLayerIds && layer.subLayerIds.length\r\n ? fillSubLayers(layer, allLayers)\r\n : true\r\n : false\r\n )\r\n .reverse())\r\n )\r\n );\r\n};\r\n\r\nconst getApiConfig = (endpoints: IEndpoints, apiConfig: IApiConfig[]) => {\r\n apiConfig.forEach((api) => (api.url = getEndpointUrl(endpoints, api.endpoint)));\r\n return apiConfig;\r\n};\r\n\r\nconst getPrint = (endpoints: IEndpoints, print: IPrint): IPrint => ({\r\n ...print,\r\n printDPI: 96,\r\n url: getEndpointUrl(endpoints, print.endpoint)\r\n});\r\n\r\nconst getPrintRewrite = (endpoints: IEndpoints, rewrite: IRewrite[]): IRewrite[] => {\r\n const printRewrites: IRewrite[] = [];\r\n rewrite.forEach((element: IRewrite) => {\r\n printRewrites.push({\r\n fromEndpoint: element.fromEndpoint,\r\n toEndpoint: element.toEndpoint,\r\n from: getEndpointUrl(endpoints, element.fromEndpoint),\r\n to: getEndpointUrl(endpoints, element.toEndpoint)\r\n });\r\n });\r\n return printRewrites;\r\n};\r\n\r\nconst getChildMapsList = (basemaps: IUserBasemap[], basemap: IUserBasemap) => {\r\n const childMapsList = basemaps.map((bmp): string => bmp.parent_id === basemap.id && bmp.id).filter((val) => val);\r\n if (childMapsList.length > 0) {\r\n childMapsList.push(basemap.id);\r\n childMapsList.reverse();\r\n return childMapsList;\r\n }\r\n return [];\r\n};\r\n\r\nconst mapUserBasemapToBasemap = async (endpoints: IEndpoints, basemap: IUserBasemap, basemaps: IUserBasemap[]) => {\r\n const layersParsed = await Promise.all(\r\n basemap.layers.map(async (layer): Promise => await mapUserLayerToLayer(endpoints, layer as IUserLayer))\r\n );\r\n return {\r\n ...basemap,\r\n opacity: basemap.opacity || 1,\r\n parentId: basemap.parent_id || \"\",\r\n childMaps: getChildMapsList(basemaps, basemap),\r\n url: basemap.layers[0] ? endpoints[basemap.layers[0].endpoint.endpoint] + basemap.layers[0].endpoint.url : \"\",\r\n type: basemap.layers[0]?.type,\r\n layers: layersParsed,\r\n projection: \"EPSG:\" + (basemap.layers[0]?.spatialReference || 3059),\r\n crossOrigin: \"anonymous\",\r\n params: {\r\n LAYERS: basemap.layers[0]?.layers && basemap.layers[0]?.layers[0],\r\n FORMAT: basemap.layers[0]?.imagetype,\r\n transparent: false\r\n },\r\n serverType: \"geoserver\",\r\n minScale: basemap.layers[0]?.minScale,\r\n maxScale: basemap.layers[0]?.maxScale,\r\n maxLodLevel: basemap.layers[0]?.maxLodLevel,\r\n isBaseMap: true,\r\n copyright: layersParsed[0]?.copyright\r\n };\r\n};\r\n\r\nexport const mapTileGrid = {\r\n origin: [-5120900, 3998100],\r\n tileSize: [512, 512],\r\n resolutions: [\r\n 1058.3354500042335, 529.1677250021168, 264.5838625010584, 132.2919312505292, 52.91677250021167,\r\n 26.458386250105836, 13.229193125052918, 10.583354500042335, 7.9375158750317505, 5.291677250021167,\r\n 3.9687579375158752, 2.6458386250105836, 1.3229193125052918, 0.5291677250021167\r\n ]\r\n};\r\n\r\nexport const wmtsTileGrid = {\r\n origin: [189423.1434797966, 449393.55835487787],\r\n tileSize: [512, 512],\r\n resolutions: [\r\n 1120, 560, 280, 140, 55.99999999999999, 27.999999999999996, 13.999999999999998, 11.2, 8.399999999999999, 5.6,\r\n 4.199999999999999, 2.8, 1.4, 0.5599999999999999, 0.27999999999999997, 0.21, 0.13999999999999999,\r\n 0.06999999999999999, 0.027999999999999997\r\n ],\r\n matrixIds: [\r\n \"LKS_LVM:0\",\r\n \"LKS_LVM:1\",\r\n \"LKS_LVM:2\",\r\n \"LKS_LVM:3\",\r\n \"LKS_LVM:4\",\r\n \"LKS_LVM:5\",\r\n \"LKS_LVM:6\",\r\n \"LKS_LVM:7\",\r\n \"LKS_LVM:8\",\r\n \"LKS_LVM:9\",\r\n \"LKS_LVM:10\",\r\n \"LKS_LVM:11\",\r\n \"LKS_LVM:12\",\r\n \"LKS_LVM:13\",\r\n \"LKS_LVM:14\",\r\n \"LKS_LVM:15\",\r\n \"LKS_LVM:16\",\r\n \"LKS_LVM:17\",\r\n \"LKS_LVM:18\"\r\n ],\r\n sizes: [\r\n [1, 1],\r\n [3, 1],\r\n [5, 2],\r\n [9, 4],\r\n [21, 10],\r\n [41, 20],\r\n [81, 40],\r\n [101, 49],\r\n [135, 66],\r\n [202, 98],\r\n [269, 131],\r\n [403, 196],\r\n [806, 391],\r\n [2014, 977],\r\n [4027, 1954],\r\n [5369, 2605],\r\n [8053, 3907],\r\n [16105, 7813],\r\n [40261, 19531]\r\n ]\r\n};\r\n\r\nexport const config: IConfigOLD = {\r\n default: {\r\n center: [530000, 310000],\r\n extentSize: [530000, 310000],\r\n // viewExtent: [160000, 40000, 900000, 570000],\r\n viewExtent: [-700000, -400000, 2000000, 1000000],\r\n zoom: 4.5,\r\n projection: \"EPSG:3059\",\r\n zoomToLevel: 13,\r\n highLightLayerId: \"highlightLayer\",\r\n highLightSheetLayerId: \"highLightSheetLayerId\",\r\n drawingLayerId: \"drawingLayer\",\r\n highLightClusterLayerId: \"highLightClusterLayer\",\r\n hoverLayerId: \"hoverLayer\",\r\n clickedClusterLayerId: \"clickedClusterLayerId\",\r\n colors: [\r\n \"#FF6900\",\r\n \"#FCB900\",\r\n \"#008744\",\r\n \"#00D084\",\r\n \"#8ED1FC\",\r\n \"#0057e7\",\r\n \"#ABB8C3\",\r\n \"#333333\",\r\n \"#EB144C\",\r\n \"#F78DA7\",\r\n \"#9900EF\"\r\n ]\r\n },\r\n geoLocation: {\r\n geolocationOptions: {\r\n maximumAge: 0,\r\n timeout: 15000,\r\n enableHighAccuracy: true\r\n }\r\n },\r\n search: {\r\n url: proxyUrl + \"proxy/b3bab3192ed5477d8854f4eea8601f7f\",\r\n searchLayers: [\r\n { layerId: \"0\", field: \"MUNICIPALITYNAME\" },\r\n { layerId: \"1\", field: \"REGIONNAME\" }\r\n ]\r\n },\r\n reCaptchaSiteKey: \"6Ld_N5seAAAAAPVbnoGMwILxB_hVXPY32mu90RpQ\",\r\n upload: {\r\n url: proxyUrl + \"proxy/fp_save_67312ef2b5244f28a6183e2397755e88/api/Save\"\r\n },\r\n print: {\r\n endpoint: \"/print\",\r\n url: proxyUrl + \"proxy/print_846d8f58c3da4f91bc914f7fca62d0ec\"\r\n },\r\n email: {\r\n subject: \"Paziņojums par AS “Latvijas valsts meži” iesniegtu pieteikumu\",\r\n body: \"AS “Latvijas valsts meži” ir saņemts Jūsu iesniegtais pieteikums par aktivitātes vai pasākuma saskaņošanu. Par saskaņojumu pasākuma norisei ar Jums sazināsies attiecīgā reģiona Nekustamo īpašumu pārvaldes Zemes lietojuma speciālists.\",\r\n url: proxyUrl + \"proxy/email_4f7ad5fa1c62484cab58d7d64013f4aa/api/send\"\r\n },\r\n geometryService: {\r\n endpoint: \"/api/geometryservice/intersect\",\r\n url: proxyUrl + \"proxy/geometry_1daf82b0fba14e20935e972913ff683b\"\r\n }\r\n};\r\n","export enum SelectedStatus {\r\n Default = 0,\r\n Selected = 1\r\n}\r\n\r\nexport enum Condition {\r\n Is = \"is\",\r\n Not = \"not\"\r\n}\r\n\r\nexport enum ApplicantType {\r\n Individual = 0,\r\n Company = 1\r\n}\r\n\r\nexport enum AttachmentType {\r\n Path = \"Download\",\r\n File = \"FileProvider\"\r\n}\r\n\r\nexport enum Input {\r\n Text = \"Text\",\r\n TextArea = \"TextArea\",\r\n Select = \"Select\",\r\n Checkbox = \"Checkbox\",\r\n Number = \"Number\",\r\n Date = \"Date\",\r\n Phone = \"Phone\",\r\n Email = \"Email\",\r\n Label = \"Label\"\r\n}\r\n\r\nexport enum DrawType {\r\n Point = \"Point\",\r\n Polyline = \"Polyline\",\r\n Polygon = \"Polygon\",\r\n\r\n PointText = \"PointText\",\r\n PolylineLvmRoad = \"PolylineLvmRoad\",\r\n PolygonProperty = \"PolygonProperty\"\r\n}\r\n\r\nexport enum Result {\r\n Success = \"Success\",\r\n Error = \"Error\"\r\n}\r\n\r\nexport enum PrintType {\r\n Path = 1,\r\n File = 2\r\n}\r\n\r\nexport enum DropdownType {\r\n SingleLine = \"SingleLine\",\r\n MultiLine = \"MultiLine\"\r\n}\r\n\r\nexport enum BaseMapsMode {\r\n default = \"default\",\r\n swipe = \"swipe\",\r\n opacity = \"opacity\"\r\n}\r\n\r\nexport enum ImageRole {\r\n Thumbnail = \"thumbnail\",\r\n Original = \"original\",\r\n Fullscreen = \"fullscreen\"\r\n}\r\n\r\nexport enum Widget {\r\n Search = \"Search\",\r\n Toc = \"Toc\",\r\n Print = \"Print\",\r\n Convert = \"Convert\",\r\n Draw = \"Draw\",\r\n Bookmarks = \"Bookmarks\",\r\n DataDownload = \"DataDownload\",\r\n MapDownload = \"MapDownload\",\r\n Help = \"Help\"\r\n}\r\n\r\nexport enum GroupVisibility {\r\n VISIBLE = \"visible\",\r\n HIDDEN = \"hidden\",\r\n MIXED = \"mixed\"\r\n}\r\n\r\nexport enum LayerAction {\r\n Expand = \"expand\",\r\n View = \"view\",\r\n Shown = \"shown\"\r\n}\r\n\r\nexport enum LayerType {\r\n MapImageLayer = \"MapImageLayer\",\r\n TileLayer = \"TileLayer\",\r\n WMS = \"WMS\",\r\n WMTS = \"WMTS\",\r\n FeatureLayer = \"FeatureLayer\",\r\n ClusterLayer = \"ClusterLayer\",\r\n LayerGroup = \"LayerGroup\"\r\n}\r\n\r\nexport enum SheetSelectMode {\r\n Click = \"Click\",\r\n Polygon = \"Polygon\"\r\n}\r\n","import i18next from \"i18next\";\r\nimport i18nextXhrBackend from \"i18next-http-backend\";\r\nimport { initReactI18next } from \"react-i18next\";\r\n\r\nconst path = location.pathname.split(\"/\")[1];\r\nconst url = location.protocol + \"//\" + location.host + \"/\" + path;\r\n\r\nexport const i18n = (language: string): Promise =>\r\n i18next\r\n .use(i18nextXhrBackend)\r\n .use(initReactI18next)\r\n .init({\r\n debug: true,\r\n fallbackLng: language,\r\n interpolation: {\r\n escapeValue: false\r\n },\r\n lng: language,\r\n backend: {\r\n loadPath: url + \"/locales/\" + language + \"/translation.json\"\r\n }\r\n });\r\n","import { Vector as VectorSource, XYZ, TileWMS, ImageArcGISRest, Cluster as ClusterSource, WMTS } from \"ol/source\";\r\nimport TileGrid from \"ol/tilegrid/TileGrid\";\r\nimport WMTSTileGrid from \"ol/tilegrid/WMTS\";\r\nimport { Layer, Tile as TileLayer, Vector as VectorLayer, Image as ImageLayer, Group as LayerGroup } from \"ol/layer\";\r\nimport { config, ILayerState, mapTileGrid, wmtsTileGrid } from \"./config\";\r\nimport { getMap } from \"./GeoLiteMap\";\r\nimport { fetchFieldInfo, loadSourceFeatures } from \"./rest\";\r\nimport { tile as tileStrategy } from \"ol/loadingstrategy\";\r\nimport { createXYZ } from \"ol/tilegrid\";\r\nimport { getClusterSymbol, getSimpleSymbol } from \"./Symbols/clusterSymbols\";\r\nimport { LayerType } from \"./enums\";\r\nimport { IFeatureLayerData } from \"./interfaces\";\r\nimport { createClusterSource } from \"./clusterFunctions\";\r\nimport { getCurrentActiveToken, getTokenExtraLayers } from \"./MapDownload/Token\";\r\nimport { getReducedTileGrid } from \"./basemapFunctions\";\r\n\r\nconst zIndex = 1000;\r\nconst appid = encodeURI(window.location.host + window.location.pathname);\r\n\r\nexport const getDataLayers = (configA, loadAuthLayers?: boolean): Layer[] => {\r\n const configResolutions = configA.mapLods && configA.mapLods.map((lod) => lod.resolution);\r\n const defaultTileGrid = mapTileGrid;\r\n configResolutions && (defaultTileGrid.resolutions = configResolutions);\r\n const tileGrid = new TileGrid(defaultTileGrid);\r\n\r\n const hasClusterSharing = configA.layers.find((l) => l.clusterSharingLayer);\r\n\r\n let configLayers = [];\r\n if (loadAuthLayers) {\r\n configLayers = getTokenAllowedLayers(configA.layers);\r\n } else {\r\n const layersNotRequiringLogin = configA.layers.filter((layer) => !layer.requiresLogin);\r\n const layersRequiringLogin = getTokenAllowedLayers(configA.layers);\r\n configLayers = [...layersNotRequiringLogin, ...layersRequiringLogin];\r\n }\r\n\r\n return configLayers.reverse().map((l, i) => {\r\n if (l.type === \"MapImageLayer\") {\r\n const olLayer = new ImageLayer({\r\n properties: { id: l.id },\r\n source: new ImageArcGISRest({\r\n url: l.url,\r\n crossOrigin: l.crossOrigin || \"Anonymous\",\r\n imageLoadFunction: (image, src) =>\r\n ((image.getImage() as HTMLImageElement).src = src.replace(\"DPI=90\", \"DPI=96\")),\r\n attributions: l.copyright,\r\n ratio: 1,\r\n params: l.visibleLayers && { LAYERS: \"show:\" + l.visibleLayers.join(\",\") }\r\n }),\r\n zIndex\r\n });\r\n olLayer.setProperties(l);\r\n olLayer.setVisible(false);\r\n olLayer.set(\"defaultVisible\", l.visible);\r\n return olLayer;\r\n }\r\n\r\n if (l.type === \"TileLayer\") {\r\n const tg = l.tileGrid\r\n ? new TileGrid(l.tileGrid)\r\n : l?.maxScale >= 0 || l?.maxLodLevel\r\n ? getReducedTileGrid(defaultTileGrid, l.maxScale, l.maxLodLevel || defaultTileGrid.resolutions.length)\r\n : tileGrid;\r\n\r\n const olLayer = new TileLayer({\r\n properties: { id: l.id },\r\n source: new XYZ({\r\n url: l.url + \"/tile/{z}/{y}/{x}\",\r\n projection: config.default.projection,\r\n crossOrigin: l.crossOrigin || \"Anonymous\",\r\n attributions: l.copyright,\r\n tileGrid: tg\r\n }),\r\n minResolution: l.minResolution,\r\n maxResolution: l.maxResolution,\r\n extent: l.extent,\r\n zIndex\r\n });\r\n olLayer.setProperties(l);\r\n olLayer.setVisible(false);\r\n olLayer.set(\"defaultVisible\", l.visible);\r\n return olLayer;\r\n }\r\n\r\n if (l.type === \"WMS\") {\r\n const olLayer = new TileLayer({\r\n source: new TileWMS({\r\n url: l.url,\r\n params: {\r\n FORMAT: l.imagetype || \"image/vnd.jpeg-png8\",\r\n LAYERS: l.layers\r\n },\r\n serverType: l.serverType || \"geoserver\",\r\n crossOrigin: l.crossOrigin || \"Anonymous\",\r\n projection: \"EPSG:\" + (l.spatialReference || 3059),\r\n tileGrid,\r\n attributions: l.copyright,\r\n hidpi: false\r\n }),\r\n properties: { id: l.id },\r\n zIndex\r\n });\r\n olLayer.setProperties(l);\r\n olLayer.setVisible(false);\r\n olLayer.set(\"defaultVisible\", l.visible);\r\n return olLayer;\r\n }\r\n\r\n if (l.type === \"WMTS\") {\r\n const olLayer = new TileLayer({\r\n source: new WMTS({\r\n attributions: l.copyright,\r\n url: l.url,\r\n layer: l.layers,\r\n matrixSet: \"LKS_LVM\",\r\n format: l.imagetype,\r\n projection: l.projection,\r\n tileGrid: new WMTSTileGrid(wmtsTileGrid),\r\n style: l.style || \"raster\",\r\n wrapX: true,\r\n crossOrigin: l.crossOrigin || \"Anonymous\",\r\n // https://manidarbi.lvm.lv/browse/GDEV-4137\r\n tileLoadFunction: (imageTile, src) => {\r\n //@ts-ignore\r\n imageTile.getImage().src = src + \"&appid=\" + appid;\r\n }\r\n }),\r\n properties: { id: l.id },\r\n visible: true,\r\n zIndex\r\n });\r\n olLayer.setProperties(l);\r\n olLayer.setVisible(false);\r\n olLayer.set(\"defaultVisible\", l.visible);\r\n return olLayer;\r\n }\r\n\r\n if (l.type === \"ClusterLayer\") {\r\n const clusterMinScaleThreshold = l.cluster?.clusterMinScale || 0;\r\n const url = l.layerId !== undefined ? l.url + \"/\" + l.layerId : l.url;\r\n let olLayer;\r\n\r\n if (hasClusterSharing) {\r\n olLayer = new VectorLayer({\r\n properties: { id: l.id },\r\n source: new VectorSource(),\r\n minResolution: l.minResolution,\r\n maxResolution: l.maxResolution,\r\n opacity: 0.01,\r\n zIndex\r\n });\r\n } else {\r\n const layerData: IFeatureLayerData = {\r\n id: l.id,\r\n layerId: l.layerId,\r\n cluster:\r\n l.cluster ||\r\n configA.layers.find((configLayer) => configLayer.id === l.clusterSharingLayer).cluster,\r\n vectorStyles: l.vectorStyles,\r\n identify: l.identify\r\n };\r\n\r\n const source = new VectorSource({\r\n loader: (ext) => loadSourceFeatures(url, ext, source, layerData),\r\n strategy: tileStrategy(createXYZ({ tileSize: 512 })),\r\n attributions: l.copyright\r\n });\r\n const clusterSource = createClusterSource();\r\n clusterSource.setSource(source);\r\n clusterSource.setDistance(l.cluster.distance || 200);\r\n clusterSource.setMinDistance(l.cluster.minDistance || 0);\r\n\r\n olLayer = new VectorLayer({\r\n properties: { id: l.id },\r\n source: clusterSource,\r\n minResolution: l.minResolution,\r\n maxResolution: l.maxResolution,\r\n zIndex: zIndex + 100,\r\n style: (clusterFeature) => {\r\n const clusterFeatures = clusterFeature.get(\"features\");\r\n return clusterFeatures?.length > 1\r\n ? getClusterSymbol(clusterFeature.get(\"HOVERED\"), clusterFeatures.length, l.cluster)\r\n : getSimpleSymbol(clusterFeature, l.vectorStyles);\r\n }\r\n });\r\n\r\n document.addEventListener(\"moveend\", (e: CustomEvent) => {\r\n e.detail <= clusterMinScaleThreshold\r\n ? olLayer.getSource() instanceof ClusterSource && olLayer.setSource(source)\r\n : !(olLayer.getSource() instanceof ClusterSource) && olLayer.setSource(clusterSource);\r\n });\r\n l.vectorStyles.labels && olLayer.setZIndex(zIndex + 10);\r\n }\r\n fetchFieldInfo(olLayer, url);\r\n olLayer.setProperties(l);\r\n olLayer.setVisible(false);\r\n olLayer.set(\"defaultVisible\", l.visible);\r\n return olLayer;\r\n }\r\n if (l.type === \"FeatureLayer\") {\r\n const url = l.url + \"/\" + l.layerId;\r\n const source = new VectorSource({\r\n loader: (ext) => loadSourceFeatures(url, ext, source),\r\n strategy: tileStrategy(createXYZ({ tileSize: 512 })),\r\n attributions: l.copyright\r\n });\r\n const olLayer = new VectorLayer({\r\n properties: { id: l.id },\r\n source,\r\n minResolution: l.minResolution,\r\n maxResolution: l.maxResolution,\r\n zIndex,\r\n style: (f) => getSimpleSymbol(f, l.vectorStyles),\r\n declutter: !!l.declutter\r\n });\r\n fetchFieldInfo(olLayer, url);\r\n l.tooltip && olLayer.set(\"isTooltipLayer\", true);\r\n olLayer.setProperties(l);\r\n olLayer.setVisible(false);\r\n olLayer.set(\"defaultVisible\", l.visible);\r\n l.vectorStyles?.labels &&\r\n document.addEventListener(\"moveend\", () => olLayer.setStyle((f) => getSimpleSymbol(f, l.vectorStyles)));\r\n l.vectorStyles?.labels && olLayer.setZIndex(zIndex + 10);\r\n return olLayer;\r\n }\r\n if (l.type === \"LayerGroup\") {\r\n const olLayer = new LayerGroup({\r\n properties: { id: l.id },\r\n minResolution: l.minResolution,\r\n maxResolution: l.maxResolution\r\n // zIndex\r\n });\r\n olLayer.setProperties({\r\n opacity: l.opacity,\r\n title: l.title,\r\n type: LayerType.LayerGroup\r\n });\r\n\r\n olLayer.setProperties(l);\r\n olLayer.setVisible(false);\r\n olLayer.set(\"defaultVisible\", l.visible);\r\n return olLayer;\r\n }\r\n });\r\n};\r\n\r\nexport const switchLayers = (layerStates, parentState?: any) => {\r\n layerStates.map((state) => {\r\n const mapLayer = getMap()\r\n .getLayers()\r\n .getArray()\r\n .find((mapLayer) => mapLayer.get(\"id\") === state.layerId);\r\n\r\n // šis ir LayerGroup gadījumam\r\n if (!mapLayer) {\r\n state.sublayers && state.sublayers.length && switchLayers(state.sublayers, state);\r\n return;\r\n }\r\n\r\n if (mapLayer.get(\"type\") === \"MapImageLayer\") {\r\n const toShow = [];\r\n const toHide = [];\r\n\r\n getVisibility(state, toShow, toHide);\r\n\r\n const hidenIDs = Array.from(new Set(toHide));\r\n const shownIDs = Array.from(new Set(toShow));\r\n // šis ir gadījumam, kad konfigā norādīti redzamie slāņi, piem. lvm.lv lapas kartei\r\n const defaultVisible = mapLayer.get(\"visibleLayers\");\r\n const combined = shownIDs.filter(\r\n (item) => !hidenIDs.includes(item) && (defaultVisible ? defaultVisible.includes(item) : true)\r\n );\r\n\r\n (mapLayer as ImageLayer).getSource().updateParams({\r\n LAYERS: \"show:\" + (combined.length ? combined : \"9999999\")\r\n });\r\n }\r\n\r\n if (mapLayer.get(\"type\") === \"TileLayer\") {\r\n state.visible !== mapLayer.getVisible() && mapLayer.setVisible(state.shown && state.visible);\r\n }\r\n\r\n if (mapLayer.get(\"type\") === \"WMS\") {\r\n parentState\r\n ? parentState.visible === true\r\n ? mapLayer.setVisible(state.visible)\r\n : parentState.visible === false\r\n ? mapLayer.setVisible(false)\r\n : mapLayer.setVisible(state.visible)\r\n : mapLayer.setVisible(state.shown && state.visible);\r\n }\r\n\r\n if (mapLayer.get(\"type\") === \"WMTS\") {\r\n state.visible !== mapLayer.getVisible() && mapLayer.setVisible(state.visible);\r\n }\r\n });\r\n};\r\n\r\nconst getVisibility = (stateLayer: ILayerState, toShow: number[], toHide: number[]) => {\r\n if (!stateLayer.visible) {\r\n hideAllSublayers(stateLayer, toHide);\r\n return;\r\n }\r\n if (stateLayer.sublayers && stateLayer.sublayers.length) {\r\n for (const subLayer of stateLayer.sublayers) {\r\n subLayer.sublayers && subLayer.sublayers.length\r\n ? getVisibility(subLayer, toShow, toHide)\r\n : subLayer.visible\r\n ? toShow.push(Number(subLayer.layerId))\r\n : toHide.push(Number(subLayer.layerId));\r\n }\r\n } else {\r\n stateLayer.visible ? toShow.push(Number(stateLayer.layerId)) : toHide.push(Number(stateLayer.layerId));\r\n }\r\n};\r\n\r\nconst hideAllSublayers = (stateLayer: ILayerState, toHide: number[]) => {\r\n if (!stateLayer.sublayers) {\r\n return;\r\n }\r\n for (const subLayer of stateLayer.sublayers) {\r\n subLayer.sublayers ? hideAllSublayers(subLayer, toHide) : toHide.push(Number(subLayer.layerId));\r\n }\r\n};\r\n\r\nconst getTokenAllowedLayers = (layers) => {\r\n if (!getCurrentActiveToken()) {\r\n return [];\r\n }\r\n const tokenExtraLayers = getTokenExtraLayers();\r\n if (!tokenExtraLayers) {\r\n return layers.filter((layer) => layer.requiresLogin && !layer.id.includes(\"geotelpaparcels\"));\r\n }\r\n const extraLayerIds: number[] = tokenExtraLayers.split(\";\").map((id) => Number(id) - 1);\r\n return layers.filter(\r\n (layer) =>\r\n (layer.requiresLogin && !layer.id.includes(\"geotelpaparcels\")) ||\r\n (layer.requiresLogin &&\r\n layer.id.includes(\"geotelpaparcels\") &&\r\n layer.layerId !== undefined &&\r\n extraLayerIds.includes(Number(layer.layerId)))\r\n );\r\n};\r\n","import { config, IVectorLayerStyles, mapTileGrid } from \"./config\";\r\nimport { getMap } from \"./GeoLiteMap\";\r\nimport { Geometry, Point, SimpleGeometry } from \"ol/geom\";\r\nimport { extend, Extent, buffer } from \"ol/extent\";\r\nimport { getPointResolution } from \"ol/proj\";\r\nimport { Feature, View, Map, MapBrowserEvent } from \"ol\";\r\nimport { getBasemapLayers } from \"./basemapFunctions\";\r\nimport { getDataLayers } from \"./layerFunctions\";\r\nimport { AttributionButton } from \"./Buttons/Attribution\";\r\nimport { defaults as defaultControls } from \"ol/control\";\r\nimport { getDrawingSymbol, getHighLightSymbol } from \"./Symbols/symbols\";\r\nimport { Vector as VectorLayer } from \"ol/layer\";\r\nimport { IFeatureArrayTimeStamp } from \"../Contexts/AppContext\";\r\nimport { Vector as VectorSource, Cluster as ClusterSource } from \"ol/source\";\r\nimport { DrawType, SheetSelectMode } from \"./enums\";\r\nimport { debounce, deepClone, deepCloneWithChanges, getUrlParam, replaceUrlParam, roundToPlaceValue } from \"./utils\";\r\nimport { IHoveredCluster } from \"../Contexts/MapContext\";\r\nimport { getSimpleSymbol } from \"./Symbols/clusterSymbols\";\r\nimport { Coordinate } from \"ol/coordinate\";\r\nimport { animatePoint, clusterCircularExpand, clusterExpand } from \"./clusterAnimation\";\r\nimport { FeatureLike } from \"ol/Feature\";\r\nimport { identifyClusterFeatures } from \"./Identify/identifyUtils\";\r\n\r\nlet DEFAULT_DPI;\r\nconst inchesPerMeter = 1000 / 25.4;\r\n\r\nconst loc = getUrlParam(\"loc\");\r\nconst locData = loc && loc.split(\";\");\r\n\r\nlet mapLods;\r\n\r\nconst getBuffer = (feature: Feature) => buffer(feature.getGeometry().getExtent(), 100);\r\n\r\nexport const createMap = (\r\n configA,\r\n target: HTMLDivElement,\r\n highLightSource: VectorSource,\r\n highLightClusterSource: VectorSource,\r\n highLightSheetSource: VectorSource,\r\n hoveredSource: VectorSource,\r\n clickedClusterSource: VectorSource\r\n): Map => {\r\n DEFAULT_DPI = configA.defaultDpi || 96.198892;\r\n mapLods = configA.mapLods;\r\n const configResolutions = configA.mapLods && configA.mapLods.map((lod) => lod.resolution);\r\n const defaultTileGrid = mapTileGrid;\r\n configResolutions && (defaultTileGrid.resolutions = configResolutions);\r\n\r\n const center =\r\n locData && locData.length === 3 ? [parseInt(locData[0], 10), parseInt(locData[1], 10)] : config.default.center;\r\n const zoom = locData && locData.length === 3 ? parseInt(locData[2], 10) : config.default.zoom;\r\n\r\n const highLightLayer = new VectorLayer({\r\n properties: { id: config.default.highLightLayerId },\r\n source: highLightSource,\r\n zIndex: 3000,\r\n style: (f) => getHighLightSymbol(f as Feature, configA.identifyGeometries)\r\n });\r\n\r\n const highLightClusterLayer = new VectorLayer({\r\n properties: { id: config.default.highLightClusterLayerId },\r\n source: highLightClusterSource,\r\n zIndex: 6000\r\n });\r\n\r\n const highLightSheetLayer = new VectorLayer({\r\n properties: { id: config.default.highLightSheetLayerId },\r\n source: highLightSheetSource,\r\n zIndex: 3000,\r\n style: (f) => getHighLightSymbol(f as Feature, configA.identifyGeometries)\r\n });\r\n\r\n const hoveredLayer = new VectorLayer({\r\n properties: { id: config.default.hoverLayerId },\r\n source: hoveredSource,\r\n zIndex: 4000,\r\n style: null\r\n });\r\n\r\n const clickedClusterLayer = new VectorLayer({\r\n properties: { id: config.default.clickedClusterLayerId },\r\n source: clickedClusterSource,\r\n zIndex: 3000,\r\n style: null\r\n });\r\n\r\n const drawingLayer = new VectorLayer({\r\n properties: { id: config.default.drawingLayerId, type: \"FeatureLayer\" },\r\n source: new VectorSource({ useSpatialIndex: false }), // useSpatialIndex: false is to maintain same order in feature collection\r\n zIndex: 2000,\r\n style: (drawFeature) =>\r\n getDrawingSymbol(\r\n drawFeature,\r\n drawFeature.get(\"MEASUREMENTSHIDDEN\"),\r\n drawFeature.get(\"DRAWTYPE\"),\r\n drawFeature.get(\"COLOR\")\r\n )\r\n });\r\n\r\n const map = new Map({\r\n layers: [\r\n ...getBasemapLayers(configA),\r\n ...getDataLayers(configA),\r\n drawingLayer,\r\n highLightLayer,\r\n highLightClusterLayer,\r\n highLightSheetLayer,\r\n hoveredLayer,\r\n clickedClusterLayer\r\n ],\r\n target,\r\n view: new View({\r\n projection: config.default.projection,\r\n center,\r\n extent: config.default.viewExtent,\r\n zoom,\r\n enableRotation: false,\r\n showFullExtent: true,\r\n constrainResolution: true,\r\n resolutions: configResolutions || defaultTileGrid.resolutions\r\n }),\r\n controls: defaultControls({ zoom: false, rotate: false, attribution: false }).extend([new AttributionButton()])\r\n });\r\n\r\n const startExt = configA.startingExtent;\r\n startExt && !loc && map.getView().fit([startExt.xmin, startExt.ymin, startExt.xmax, startExt.ymax]);\r\n\r\n return map;\r\n};\r\n\r\nexport const zoomHome = (callback?: () => void): void => {\r\n const view = getMap().getView();\r\n //@ts-ignore\r\n const resolutionX = config.default.extentSize[0] / view.viewportSize_[0];\r\n //@ts-ignore\r\n const resolutionY = config.default.extentSize[1] / view.viewportSize_[1];\r\n const zoom = view.getZoomForResolution(resolutionX > resolutionY ? resolutionX : resolutionY);\r\n\r\n view.fit(new Point(config.default.center), {\r\n maxZoom: zoom,\r\n duration: 1000,\r\n callback\r\n });\r\n};\r\n\r\nexport const zoomToCoordinates = (coordinates: Coordinate): void => zoomTo(new Point(coordinates));\r\nexport const zoomToFeature = (feature: Feature): void => zoomTo(feature.getGeometry());\r\n\r\nconst zoomTo = (geometry: Geometry): void => {\r\n const view = getMap().getView();\r\n const currentZoom = view.getZoom();\r\n const maxZoom = currentZoom > config.default.zoomToLevel ? currentZoom : config.default.zoomToLevel;\r\n document.dispatchEvent(new Event(\"stopTracking\"));\r\n view.fit(geometry as SimpleGeometry, { duration: 500, maxZoom });\r\n};\r\n\r\nexport const zoomToExtent = (extent: Extent, callback?: () => void): void => {\r\n if (!extent || extent.includes(Infinity)) {\r\n return;\r\n }\r\n document.dispatchEvent(new Event(\"stopTracking\"));\r\n const view = getMap().getView();\r\n view.fit(extent, { duration: 500, padding: [20, 20, 20, 20], callback });\r\n};\r\n\r\nexport const onMoveEnd = (): void => {\r\n const view = getMap().getView();\r\n const center = view.getCenter();\r\n const zoom = view.getZoom();\r\n const scale = getScale(zoom);\r\n //@ts-ignore\r\n document.mapScale = scale;\r\n document.dispatchEvent(new CustomEvent(\"moveend\", { detail: scale }));\r\n\r\n const params = Math.round(center[0]) + \";\" + Math.round(center[1]) + \";\" + Math.round(zoom);\r\n const url = replaceUrlParam(\"loc\", params);\r\n window.history.replaceState({}, document.title, url);\r\n};\r\n\r\nconst getScale = (zoom: number): number => {\r\n const view = getMap().getView();\r\n const center = view.getCenter();\r\n const pointResolution = getPointResolution(view.getProjection(), view.getResolution(), center, \"m\");\r\n\r\n return mapLods\r\n ? mapLods.find((lod) => lod.level === zoom).scale\r\n : roundToPlaceValue(Math.round(parseFloat(pointResolution.toString()) * inchesPerMeter * DEFAULT_DPI));\r\n};\r\n\r\nexport const onPointerMove = (evt, target: HTMLDivElement, configA, setHoveredCluster, setHoveredFeature): void => {\r\n debounce(handlePointerMove(evt, target, configA, setHoveredCluster, setHoveredFeature), 100);\r\n};\r\n\r\nconst handlePointerMove = (evt, target: HTMLDivElement, configA, setHoveredCluster, setHoveredFeature): void => {\r\n if (evt.dragging) {\r\n return;\r\n }\r\n\r\n const hasFeatureAtPixel = getMap().hasFeatureAtPixel(evt.pixel);\r\n target.style.cursor = hasFeatureAtPixel ? \"pointer\" : null;\r\n\r\n const hasClusterFeatureAtPixel = getMap().hasFeatureAtPixel(evt.pixel, {\r\n hitTolerance: 10,\r\n layerFilter: (layer) => layer.getSource() instanceof ClusterSource\r\n });\r\n handleClusterHover(hasClusterFeatureAtPixel, configA.layers, evt.pixel, setHoveredCluster);\r\n\r\n const tooltipFeaturesAtPixel = getMap().getFeaturesAtPixel(evt.pixel, {\r\n layerFilter: (layer) => layer.get(\"isTooltipLayer\"),\r\n hitTolerance: 8\r\n });\r\n resetHoveredFeature();\r\n if (tooltipFeaturesAtPixel.length && !hasClusterFeatureAtPixel) {\r\n let hasHoveredFeature;\r\n getMap().forEachFeatureAtPixel(\r\n evt.pixel,\r\n (pixelFeature, layer) => {\r\n !hasHoveredFeature &&\r\n (layer.getSource() as VectorSource).getFeatures().map((feature) => {\r\n if (pixelFeature === feature) {\r\n hasHoveredFeature = true;\r\n feature.set(\"HOVERED\", true);\r\n setHoveredFeature({\r\n feature,\r\n evt: evt.coordinate,\r\n tooltipTemplate: layer.get(\"tooltip\").tooltipTemplate,\r\n fieldInfo: layer.get(\"fieldInfo\")\r\n });\r\n }\r\n });\r\n },\r\n {\r\n layerFilter: (layer) => layer.get(\"isTooltipLayer\")\r\n }\r\n );\r\n } else {\r\n setHoveredFeature(null);\r\n }\r\n};\r\n\r\nconst handleClusterHover = (hasFeature, configLayers, pixel, setHoveredCluster) => {\r\n if (hasFeature) {\r\n const clusterLayers = configLayers.filter((l) => l.type === \"ClusterLayer\");\r\n for (const clusterLayer of clusterLayers) {\r\n const pixelfeature = getMap().getFeaturesAtPixel(pixel, {\r\n hitTolerance: 10,\r\n layerFilter: (layer) => layer.get(\"id\") === clusterLayer.id\r\n });\r\n if (pixelfeature && pixelfeature.length && !pixelfeature[0].get(\"ISCLUSTERCLICKED\")) {\r\n (pixelfeature[0] as Feature).set(\"HOVERED\", true);\r\n\r\n const clusterConfig =\r\n clusterLayer.cluster ||\r\n configLayers.find((configLayer) => configLayer.id === clusterLayer.clusterSharingLayer).cluster;\r\n\r\n setHoveredCluster({\r\n feature: pixelfeature[0],\r\n style: removePaddings(clusterLayer.vectorStyles),\r\n clusterConfig: clusterConfig\r\n });\r\n break;\r\n }\r\n }\r\n } else {\r\n const clusterLayers = configLayers.filter((l) => l.type === \"ClusterLayer\");\r\n clusterLayers && resetHoveredCluster(clusterLayers);\r\n clusterLayers && setHoveredCluster(null);\r\n }\r\n};\r\n\r\nconst removePaddings = (vectorStyles: IVectorLayerStyles) =>\r\n vectorStyles.labels\r\n ? deepCloneWithChanges(vectorStyles, [\r\n { key: \"regularShape\", remove: true },\r\n { key: \"offsetX\", remove: true },\r\n { key: \"padding\", value: [4, 4, 2, 5] }\r\n ])\r\n : vectorStyles;\r\n\r\nexport const onClick = (\r\n evt: MapBrowserEvent,\r\n setMapClick: CallableFunction,\r\n setFeaturesPopup: CallableFunction,\r\n drawType: DrawType,\r\n highLightClusterSource: VectorSource,\r\n clickedClusterSource: VectorSource\r\n): void => {\r\n if (evt.dragging || drawType) {\r\n return;\r\n }\r\n\r\n const clusterFeatures = getMap().getFeaturesAtPixel(evt.pixel, {\r\n layerFilter: (layer) => layer.getSource() instanceof ClusterSource\r\n });\r\n if (clusterFeatures && clusterFeatures.length) {\r\n (clusterFeatures[0] as Feature).get(\"features\")?.length > 1\r\n ? onClusterSourceClick(clusterFeatures[0], setFeaturesPopup, highLightClusterSource, clickedClusterSource)\r\n : setMapClick(evt);\r\n\r\n return;\r\n }\r\n\r\n const hasFeatureAtPixel = getMap().hasFeatureAtPixel(evt.pixel, {\r\n layerFilter: (layer) => layer.get(\"id\") === config.default.drawingLayerId\r\n });\r\n\r\n if (!hasFeatureAtPixel) {\r\n setMapClick(evt);\r\n return;\r\n }\r\n\r\n console.log(\"map click\");\r\n};\r\n\r\nexport const onDoubleClick = (\r\n evt: MapBrowserEvent,\r\n setMapClick: CallableFunction,\r\n drawType: DrawType,\r\n sheetSelectMode: SheetSelectMode\r\n): void => {\r\n if (sheetSelectMode && sheetSelectMode === SheetSelectMode.Polygon) {\r\n setMapClick(evt);\r\n return;\r\n }\r\n\r\n if (evt.dragging || drawType) {\r\n return;\r\n }\r\n\r\n const hasClusterAtPixel = getMap().hasFeatureAtPixel(evt.pixel, {\r\n layerFilter: (layer) => layer.getSource() instanceof ClusterSource\r\n });\r\n if (hasClusterAtPixel) {\r\n getMap().forEachFeatureAtPixel(evt.pixel, (f) => {\r\n const clusteredFeatures: Feature[] = f.get(\"features\");\r\n if (clusteredFeatures?.length >= 1) {\r\n zoomToExtent(\r\n clusteredFeatures.reduce(\r\n (result, feature) =>\r\n result === null ? getBuffer(feature) : extend(result, getBuffer(feature)),\r\n null\r\n )\r\n );\r\n }\r\n });\r\n return;\r\n }\r\n};\r\n\r\nconst onClusterSourceClick = (\r\n feature: FeatureLike,\r\n setFeaturesPopup,\r\n highLightClusterSource: VectorSource,\r\n clickedClusterSource: VectorSource\r\n) => {\r\n if ((feature as Feature).get(\"ISCLUSTERCLICKED\")) {\r\n return;\r\n }\r\n resetClickedCluster(clickedClusterSource);\r\n (feature as Feature).set(\"ISCLUSTERCLICKED\", true);\r\n const clusteredFeatures: Feature[] = feature.get(\"features\");\r\n if (clusteredFeatures?.length >= 1) {\r\n clusteredFeatures[0].get(\"layerData\").cluster?.identifyOnClick\r\n ? identifyClickedCluster(\r\n feature,\r\n clusteredFeatures,\r\n setFeaturesPopup,\r\n highLightClusterSource,\r\n clickedClusterSource\r\n )\r\n : zoomToExtent(\r\n clusteredFeatures.reduce(\r\n (result, feature) => (result === null ? getBuffer(feature) : extend(result, getBuffer(feature))),\r\n null\r\n )\r\n );\r\n }\r\n};\r\n\r\nconst identifyClickedCluster = (\r\n feature,\r\n clusteredFeatures,\r\n setFeaturesPopup,\r\n highLightClusterSource,\r\n clickedClusterSource\r\n) => {\r\n const center = (feature.getGeometry() as Point).getCoordinates();\r\n const view = getMap().getView();\r\n const pointResolution = getPointResolution(view.getProjection(), view.getResolution(), center, \"m\");\r\n setFeaturesPopup({\r\n coordinates: [center[0], center[1] + 32 * pointResolution],\r\n results: identifyClusterFeatures(clusteredFeatures),\r\n hideArrow: true,\r\n hideHighLight: true\r\n });\r\n\r\n const vectorStyles = clusteredFeatures[0].get(\"layerData\").vectorStyles;\r\n const noLabels = vectorStyles.labels && clusteredFeatures[0].get(\"layerData\").cluster?.hoverAnimation?.hideLabels;\r\n const styles = { ...vectorStyles };\r\n if (noLabels) {\r\n delete styles.labels;\r\n }\r\n\r\n prepareClickedClusterFeatures(feature, clickedClusterSource, styles);\r\n animateClickedCluster(clusteredFeatures, highLightClusterSource, clickedClusterSource);\r\n};\r\n\r\nexport const changeHighlightFeatures = (\r\n highLightFeatures: IFeatureArrayTimeStamp,\r\n highLightSource: VectorSource\r\n): void => {\r\n if (!highLightFeatures?.features) {\r\n highLightSource.clear();\r\n return;\r\n }\r\n highLightSource.clear();\r\n highLightSource.addFeatures(highLightFeatures.features);\r\n};\r\n\r\nexport const changeHighlightSheetFeatures = (\r\n sheetFeatures: Feature[],\r\n highLightSheetSource: VectorSource\r\n): void => {\r\n if (!sheetFeatures) {\r\n highLightSheetSource.clear();\r\n return;\r\n }\r\n highLightSheetSource.clear();\r\n highLightSheetSource.addFeatures(sheetFeatures);\r\n};\r\n\r\nexport const highlightCluster = (\r\n clusterFeature: IHoveredCluster,\r\n highLightClusterSource: VectorSource\r\n): void => {\r\n const features = prepareClusterFeatures(clusterFeature, highLightClusterSource);\r\n if (!features) {\r\n return;\r\n }\r\n\r\n highLightClusterSource.addFeatures(features);\r\n};\r\n\r\nexport const onHoverCluster = (\r\n hoveredCluster: IHoveredCluster,\r\n animationId: number,\r\n setAnimationId: CallableFunction,\r\n animating: boolean,\r\n setAnimating: CallableFunction,\r\n highLightClusterSource: VectorSource\r\n): void => {\r\n if (\r\n hoveredCluster &&\r\n hoveredCluster.clusterConfig.hoverAnimation &&\r\n !animating &&\r\n hoveredCluster.feature.get(\"features\")?.length > 1\r\n ) {\r\n const id = hoveredCluster.feature.get(\"features\")[0].get(\"OBJECTID\");\r\n if (id !== animationId) {\r\n setAnimationId(id);\r\n animateCluster(hoveredCluster, highLightClusterSource);\r\n setTimeout(() => setAnimating(false), hoveredCluster.clusterConfig.hoverAnimation.durationMs + 50);\r\n }\r\n }\r\n if (hoveredCluster && !hoveredCluster.clusterConfig.hoverAnimation) {\r\n highlightCluster(hoveredCluster, highLightClusterSource);\r\n }\r\n if (!hoveredCluster) {\r\n highlightCluster(null, highLightClusterSource);\r\n animationId && setAnimationId(null);\r\n }\r\n};\r\n\r\nexport const animateCluster = (\r\n clusterFeature: IHoveredCluster,\r\n highLightClusterSource: VectorSource\r\n): void => {\r\n const features = prepareClusterFeatures(clusterFeature, highLightClusterSource);\r\n if (!features) {\r\n return;\r\n }\r\n\r\n const startCoords = (clusterFeature.feature.getGeometry() as Point).getCoordinates();\r\n const clones = features.map((f: Feature) => {\r\n const newFeat = f.clone();\r\n (newFeat.getGeometry() as Point).setCoordinates(startCoords);\r\n newFeat.set(\"LABELCOORDS\", []);\r\n return newFeat;\r\n });\r\n highLightClusterSource.addFeatures(clones);\r\n\r\n clusterFeature.clusterConfig.hoverAnimation.circularExpand\r\n ? clusterCircularExpand(\r\n clones,\r\n startCoords,\r\n clusterFeature.clusterConfig.hoverAnimation.durationMs,\r\n clusterFeature.clusterConfig.hoverAnimation.pointRadiusPx\r\n )\r\n : clusterExpand(clones, features, startCoords, clusterFeature.clusterConfig.hoverAnimation.durationMs);\r\n};\r\n\r\nexport const animateClickedCluster = (\r\n features: Feature[],\r\n highLightClusterSource: VectorSource,\r\n clickedClusterSource: VectorSource\r\n): void => {\r\n const keepCircularOnClick = features[0].get(\"layerData\").cluster?.hoverAnimation?.keepCircularOnClick;\r\n const vectorStyles = features[0].get(\"layerData\").vectorStyles;\r\n\r\n const clones = features.map((f: Feature, i) => {\r\n const newFeat = f.clone();\r\n const targetCoords = (f.getGeometry() as Point).getCoordinates();\r\n const startCoords = highLightClusterSource.getFeatures()?.length\r\n ? (highLightClusterSource.getFeatures()[i]?.getGeometry() as Point).getCoordinates()\r\n : targetCoords;\r\n (newFeat.getGeometry() as Point).setCoordinates(startCoords);\r\n if (keepCircularOnClick) {\r\n const labelCoords = highLightClusterSource.getFeatures()[i]?.get(\"LABELCOORDS\");\r\n labelCoords && newFeat.set(\"LABELCOORDS\", labelCoords);\r\n\r\n const paddingLessStyle = removePaddings(vectorStyles);\r\n const style = getSimpleSymbol(newFeat, paddingLessStyle);\r\n newFeat.setStyle(style);\r\n } else {\r\n animatePoint(newFeat, startCoords, targetCoords, 500);\r\n }\r\n\r\n return newFeat;\r\n });\r\n highLightClusterSource.clear();\r\n clickedClusterSource.addFeatures(clones);\r\n};\r\n\r\nconst prepareClusterFeatures = (clusterFeature: IHoveredCluster, highLightClusterSource) => {\r\n if (\r\n !clusterFeature ||\r\n !(clusterFeature.clusterConfig.previewOnHover || clusterFeature.clusterConfig.previewOnHover === undefined)\r\n ) {\r\n highLightClusterSource.clear();\r\n return;\r\n }\r\n const features = clusterFeature.feature.get(\"features\");\r\n if (!features || !features?.length) {\r\n highLightClusterSource.clear();\r\n return;\r\n }\r\n highLightClusterSource.clear();\r\n const noLabels = clusterFeature.style.labels && clusterFeature.clusterConfig.hoverAnimation.hideLabels;\r\n const style = deepClone(clusterFeature.style);\r\n if (noLabels) {\r\n delete style.labels;\r\n }\r\n (\r\n getMap()\r\n .getLayers()\r\n .getArray()\r\n .find(\r\n (mapLayer) => mapLayer.get(\"id\") === config.default.highLightClusterLayerId\r\n ) as VectorLayer\r\n ).setStyle((feature) => getSimpleSymbol(feature, style));\r\n\r\n return features;\r\n};\r\n\r\nconst prepareClickedClusterFeatures = (\r\n clusterFeature: FeatureLike,\r\n clickedClusterSource: VectorSource,\r\n styles: IVectorLayerStyles\r\n) => {\r\n clickedClusterSource.clear();\r\n clickedClusterSource.set(\"CLUSTERFEATURE\", clusterFeature as Feature);\r\n const layer = getMap()\r\n .getLayers()\r\n .getArray()\r\n .find((mapLayer) => mapLayer.get(\"id\") === config.default.clickedClusterLayerId) as VectorLayer;\r\n\r\n layer.setStyle((feature) => getSimpleSymbol(feature, styles));\r\n};\r\n\r\nconst resetHoveredCluster = (clusterLayers) =>\r\n clusterLayers.map((clusterLayer) => {\r\n const mapClusterLayer = getMap()\r\n .getLayers()\r\n .getArray()\r\n .find((mapLayer) => mapLayer.get(\"id\") === clusterLayer.id) as VectorLayer;\r\n mapClusterLayer?.getSource().forEachFeature((f) => f.get(\"HOVERED\") && f.set(\"HOVERED\", false));\r\n });\r\n\r\nconst resetHoveredFeature = () =>\r\n getMap()\r\n .getLayers()\r\n .getArray()\r\n .map(\r\n (mapLayer) =>\r\n mapLayer.get(\"isTooltipLayer\") &&\r\n (mapLayer as VectorLayer).getSource().forEachFeature((f) => {\r\n f.setStyle(null);\r\n f.set(\"HOVERED\", false);\r\n })\r\n );\r\n\r\nexport const resetClickedCluster = (clickedClusterSource: VectorSource): void => {\r\n clickedClusterSource.get(\"CLUSTERFEATURE\")?.set(\"ISCLUSTERCLICKED\", false);\r\n clickedClusterSource.clear();\r\n};\r\n\r\nexport const getDrawingLayer = (): VectorLayer> =>\r\n getMap() &&\r\n (getMap()\r\n .getLayers()\r\n .getArray()\r\n .find((l) => l.get(\"id\") === config.default.drawingLayerId) as VectorLayer);\r\n","import axios, { AxiosResponse } from \"axios\";\r\nimport { Feature } from \"ol\";\r\nimport { EsriJSON } from \"ol/format\";\r\nimport { Geometry } from \"ol/geom\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport { addLayerData } from \"./clusterFunctions\";\r\nimport { config, defaultOption, proxyUrl } from \"./config\";\r\nimport { AttachmentType, PrintType } from \"./enums\";\r\nimport { IdentifyResult, IdentifyResultsArray } from \"./Identify/identifyUtils\";\r\nimport { IEsriFieldInfo, IFeatureLayerData } from \"./interfaces\";\r\nimport { IToken } from \"./MapDownload/Token\";\r\nimport { getMultiPolygonGeometry } from \"./utils\";\r\n\r\ninterface IObjectIDs {\r\n objectId: number;\r\n globalId: string;\r\n}\r\n\r\ninterface IAttachmentPath {\r\n type: AttachmentType;\r\n url: string;\r\n}\r\ninterface IAttachmentFile {\r\n type: AttachmentType;\r\n endpoint: string;\r\n resourceId: string;\r\n}\r\n\r\nconst esrijsonFormat = new EsriJSON();\r\n\r\nconst fieldInfoCache: Record = {};\r\n\r\nexport const fetchFieldInfo = (olLayer: VectorLayer, url: string): void => {\r\n const params = {\r\n f: \"json\",\r\n returnGeometry: true,\r\n where: \"1=1\",\r\n outFields: \"*\",\r\n outSR: \"3059\"\r\n };\r\n\r\n axios\r\n .get(url, { params })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n olLayer.set(\"fieldInfo\", response.data.fields);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return [];\r\n });\r\n};\r\nexport const getFieldInfo = (): IEsriFieldInfo[] => fieldInfoCache[0];\r\n\r\nconst fixData = (features: Feature[], fieldInfos: IEsriFieldInfo[]) => {\r\n const decimalFields = getDecimalFields(fieldInfos);\r\n\r\n for (const feature of features) {\r\n for (const fieldName of decimalFields) {\r\n const value = feature.get(fieldName);\r\n if (value !== null) {\r\n feature.set(fieldName, parseFloat((value as number).toFixed(8)), true);\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst getDecimalFields = (fieldInfos: IEsriFieldInfo[]): string[] => {\r\n return fieldInfos\r\n .filter((f) => f.type === \"esriFieldTypeDouble\" || f.type === \"esriFieldTypeSingle\")\r\n .map((f) => f.name);\r\n};\r\n\r\nexport const executeQuery = async (layerUrl, query): Promise => {\r\n return axios\r\n .get(layerUrl + \"/query\", { params: query })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n const features = esrijsonFormat.readFeatures(response.data);\r\n features.length && fixData(features, response.data.fields);\r\n\r\n return features;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return [];\r\n });\r\n};\r\n\r\nexport const loadSourceFeatures = (\r\n url: string,\r\n ext: number[],\r\n source: VectorSource,\r\n layerData?: IFeatureLayerData\r\n): void => {\r\n const params = {\r\n f: \"json\",\r\n returnGeometry: true,\r\n outFields: \"*\",\r\n outSR: \"3059\",\r\n where: \"1=1\",\r\n geometry: `{xmin: ${ext[0]}, ymin:${ext[1]}, xmax:${ext[2]}, ymax:${ext[3]}, spatialReference:{wkid:3059}}`\r\n };\r\n\r\n axios\r\n .get(url + \"/query\", { params })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n const features = esrijsonFormat.readFeatures(response.data);\r\n\r\n if (features.length) {\r\n layerData && addLayerData(features, layerData);\r\n source.addFeatures(features);\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n};\r\n\r\nexport const getAllFeatures = (url: string): Promise[]> => {\r\n const params = {\r\n f: \"json\",\r\n returnGeometry: true,\r\n outFields: \"*\",\r\n outSR: \"3059\",\r\n where: \"1=1\"\r\n };\r\n\r\n return axios\r\n .get(url + \"/query\", { params })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n return esrijsonFormat.readFeatures(response.data);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n const empty: Feature[] = [];\r\n return empty;\r\n });\r\n};\r\n\r\nexport const getSubLayers = async (url: string) => {\r\n const params = { f: \"json\" };\r\n\r\n // .get(\"https://astmap.lvm.lv/beta/proxy/LV53B2653DD8BA462AAD45443E6E906BBB/MapServer/layers\", { params })\r\n\r\n return axios\r\n .get(url, { params })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n return response.data;\r\n })\r\n .catch((err) => {\r\n return [];\r\n });\r\n};\r\n\r\nexport const identify = async (url: string, params, mapLayerId: string): Promise => {\r\n return axios\r\n .get(url + \"/identify\", { params })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n\r\n const results: IdentifyResultsArray = [];\r\n response.data.results?.map((res) => {\r\n let layerElement = results.find((resEl) => resEl[0] === res.layerName);\r\n if (!layerElement) {\r\n layerElement = [res.layerName, []];\r\n results.push(layerElement);\r\n }\r\n\r\n layerElement[1].push({\r\n mapLayerId: mapLayerId,\r\n layerId: res.layerId,\r\n layerName: res.layerName,\r\n feature: esrijsonFormat.readFeatures({ features: [res] })[0]\r\n } as IdentifyResult);\r\n });\r\n\r\n return results;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n const results: IdentifyResultsArray = [];\r\n return results;\r\n });\r\n};\r\n\r\nexport const getToken = (url: string, username: string, password: string): Promise<{ success: boolean; data: any }> =>\r\n axios\r\n .get(url, {\r\n params: {\r\n user: username,\r\n password: password\r\n }\r\n })\r\n .then(\r\n (response) =>\r\n response.data.tocken &&\r\n response.data.expires && {\r\n success: true,\r\n data: {\r\n token: response.data.tocken,\r\n expires: response.data.expires,\r\n extraLayers: response.data.extraLayers\r\n }\r\n }\r\n )\r\n .catch((error) => ({\r\n success: false,\r\n data: error?.response?.data?.error && error.response.data\r\n }));\r\n\r\nexport interface ISheetDownloadResult {\r\n success: boolean;\r\n fileUrl: string;\r\n error: any;\r\n}\r\n\r\nexport const downloadMapSheets = (\r\n gridNumbers: string[],\r\n authToken: string,\r\n mapDownloadUrl: string\r\n): Promise =>\r\n axios\r\n .post(\r\n mapDownloadUrl,\r\n {\r\n tocken: authToken,\r\n grid_items: gridNumbers\r\n },\r\n {\r\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\" }\r\n }\r\n )\r\n .then((response) => {\r\n if (response.data.file) {\r\n return { success: true, fileUrl: response.data.file, error: null };\r\n }\r\n return { success: false, fileUrl: \"\", error: null };\r\n })\r\n .catch((error) => {\r\n return { success: false, fileUrl: \"\", error: error?.response?.data?.error && error.response.data };\r\n });\r\n\r\nexport const executeQueryAndReturnFieldInfo = async (layerUrl, query) => {\r\n return axios\r\n .get(layerUrl + \"/query\", { params: query })\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n const features = esrijsonFormat.readFeatures(response.data);\r\n features.length && fixData(features, response.data.fields);\r\n\r\n return { fieldInfo: response.data.fields, features };\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return null;\r\n });\r\n};\r\n\r\nexport const getWmsCapabilities = async (layerUrl) => {\r\n return axios\r\n .get(layerUrl + \"?SERVICE=WMS&REQUEST=GetCapabilities\")\r\n .then((response) => {\r\n if (response.data.error) {\r\n throw new Error(response.data.error.message + \"\\n\" + response.data.error.details.join(\"\\n\"));\r\n }\r\n\r\n return response.data;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return null;\r\n });\r\n};\r\n","import { MutableRefObject, useEffect, useRef, useState } from \"react\";\r\nimport { Vector as VectorSource, Cluster as ClusterSource } from \"ol/source\";\r\nimport { Map } from \"ol\";\r\nimport { IMapProps } from \"../Providers/mapProvider\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { useMapContext } from \"../Contexts/MapContext\";\r\nimport { useMapDownloadContext } from \"../Contexts/MapDownloadContext\";\r\nimport { addWMTSLayersAsync } from \"./wmtsLayers\";\r\nimport { switchBasemap } from \"./basemapFunctions\";\r\nimport { switchLayers } from \"./layerFunctions\";\r\nimport {\r\n changeHighlightFeatures,\r\n changeHighlightSheetFeatures,\r\n createMap,\r\n onClick,\r\n onDoubleClick,\r\n onHoverCluster,\r\n onMoveEnd,\r\n onPointerMove,\r\n resetClickedCluster,\r\n zoomToFeature\r\n} from \"./mapFunctions\";\r\nimport { DrawType, SheetSelectMode } from \"./enums\";\r\nimport { createClusters, createClusterSource } from \"./clusterFunctions\";\r\n\r\nexport const useMap = (target: MutableRefObject, props: IMapProps): Map => {\r\n const { hasMap, locateFeature, highlightFeatures, setMapClick } = useAppContext();\r\n const {\r\n configA,\r\n layerStates,\r\n baseMap,\r\n drawType,\r\n hoveredCluster,\r\n featuresPopup,\r\n setHoveredCluster,\r\n setHoveredFeature,\r\n setFeaturesPopup\r\n } = useMapContext();\r\n const { sheetSelectMode, sheetFeatures } = useMapDownloadContext();\r\n\r\n const [animating, setAnimating] = useState();\r\n const [animationId, setAnimationId] = useState();\r\n\r\n const _map = useRef();\r\n const highLightSourceRef = useRef(new VectorSource());\r\n const highLightClusterSourceRef = useRef(new VectorSource());\r\n const highLightSheetSourceRef = useRef(new VectorSource());\r\n const hoveredSourceRef = useRef(new VectorSource());\r\n const clickedClusterSourceRef = useRef(new VectorSource());\r\n const clusterSourceRef = useRef(createClusterSource());\r\n const sheetSelectModeRef = useRef();\r\n\r\n const drawTypeRef = useRef(drawType);\r\n\r\n useEffect(() => {\r\n if (!target.current || !hasMap || !configA) {\r\n return;\r\n }\r\n\r\n _map.current = createMap(\r\n configA,\r\n target.current,\r\n highLightSourceRef.current,\r\n highLightClusterSourceRef.current,\r\n highLightSheetSourceRef.current,\r\n hoveredSourceRef.current,\r\n clickedClusterSourceRef.current\r\n );\r\n\r\n // This is to add WMTS layers async, using GetCapabilities request\r\n // const wmtsLayers: IBasemap[] = configA.basemaps.filter((b) => b.type === \"WMTS\");\r\n // wmtsLayers?.length && addWMTSLayersAsync(wmtsLayers, baseMap);\r\n\r\n configA.layers.find((l) => l.clusterSharingLayer) &&\r\n createClusters(_map.current, configA, clusterSourceRef.current);\r\n\r\n _map.current.on(\"moveend\", () => {\r\n onMoveEnd();\r\n setHoveredCluster(null);\r\n setAnimationId(null);\r\n });\r\n _map.current.on(\"pointermove\", (e) =>\r\n onPointerMove(e, target.current, configA, setHoveredCluster, setHoveredFeature)\r\n );\r\n _map.current.on(\"singleclick\", (e) =>\r\n onClick(\r\n e,\r\n setMapClick,\r\n setFeaturesPopup,\r\n drawTypeRef.current,\r\n highLightClusterSourceRef.current,\r\n clickedClusterSourceRef.current\r\n )\r\n );\r\n _map.current.on(\"dblclick\", (e) =>\r\n onDoubleClick(e, setMapClick, drawTypeRef.current, sheetSelectModeRef.current)\r\n );\r\n\r\n _map.current.once(\"rendercomplete\", () => document.dispatchEvent(new Event(\"rendercomplete\")));\r\n //@ts-ignore\r\n window.map = _map.current;\r\n }, [hasMap, configA]);\r\n\r\n useEffect(() => layerStates && switchLayers(layerStates), [layerStates]);\r\n useEffect(() => baseMap && switchBasemap(baseMap), [baseMap]);\r\n useEffect(() => changeHighlightFeatures(highlightFeatures, highLightSourceRef.current), [highlightFeatures]);\r\n useEffect(() => changeHighlightSheetFeatures(sheetFeatures, highLightSheetSourceRef.current), [sheetFeatures]);\r\n useEffect(() => locateFeature && zoomToFeature(locateFeature.feature), [locateFeature]);\r\n useEffect(() => !featuresPopup && resetClickedCluster(clickedClusterSourceRef.current), [featuresPopup]);\r\n useEffect(() => {\r\n sheetSelectModeRef.current = sheetSelectMode;\r\n }, [sheetSelectMode]);\r\n useEffect(() => {\r\n onHoverCluster(\r\n hoveredCluster,\r\n animationId,\r\n setAnimationId,\r\n animating,\r\n setAnimating,\r\n highLightClusterSourceRef.current\r\n );\r\n }, [hoveredCluster, animating, animationId]);\r\n\r\n //@ts-ignore\r\n window.map = _map.current;\r\n return _map.current;\r\n};\r\n","import { Feature } from \"ol\";\r\nimport { buffer } from \"ol/extent\";\r\nimport { OL3Parser } from \"jsts/org/locationtech/jts/io\";\r\nimport { BufferOp } from \"jsts/org/locationtech/jts/operation/buffer\";\r\nimport { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon } from \"ol/geom\";\r\nimport { LinearRing } from \"ol/geom\";\r\nimport { getMap } from \"./GeoLiteMap\";\r\nimport { Vector as VectorSource } from \"ol/source\";\r\nimport { Vector as VectorLayer } from \"ol/layer\";\r\nimport { Fill, Stroke, Style } from \"ol/style\";\r\nimport { EsriJSON } from \"ol/format\";\r\nimport { IEsriFieldInfo } from \"./interfaces\";\r\nimport { FeatureLike } from \"ol/Feature\";\r\n\r\nexport interface IEsriGeometry {\r\n rings: number[][][];\r\n}\r\n\r\nconst esrijsonFormat = new EsriJSON();\r\n\r\nconst parser = new OL3Parser();\r\nparser.inject(Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon);\r\n\r\nexport const getBuffer = (feature: Feature, distance?: number) =>\r\n buffer(feature.getGeometry().getExtent(), distance || 100);\r\n\r\nexport const cloneFeatures = (features: Feature[]): Feature[] => features.map((f) => f.clone());\r\n\r\nexport const getMultiPolygonGeometry = (features: Feature[]): IEsriGeometry => {\r\n const bufferFeatures = bufferizeFeatures(cloneFeatures(features), 2);\r\n // if you want to see buffers, use this function\r\n // visualizeBuffers(bufferFeatures);\r\n\r\n const geometries = bufferFeatures.map((f) => {\r\n const esriGeometry = esrijsonFormat.writeGeometry(f.getGeometry());\r\n return JSON.parse(esriGeometry).rings[0];\r\n });\r\n const geom = { hasZ: false, hasM: false, rings: [...geometries] };\r\n return geom;\r\n};\r\n\r\nexport const bufferizeFeatures = (features: Feature[], distance?: number): Feature[] => {\r\n for (let i = 0; i < features.length; i += 1) {\r\n const jstsGeometry = parser.read(features[i].getGeometry());\r\n const bo = new BufferOp(jstsGeometry);\r\n const buffered = bo.getResultGeometry(distance || 10);\r\n const geometry = parser.write(buffered);\r\n\r\n features[i].setGeometry(geometry.simplify(5));\r\n }\r\n\r\n return features;\r\n};\r\n\r\nconst createVectorLayer = (source: VectorSource) =>\r\n new VectorLayer({\r\n properties: { id: \"visualize-buffers-layer\" },\r\n source,\r\n style: () => {\r\n return new Style({\r\n fill: new Fill({ color: [255, 255, 255, 0.4] }),\r\n stroke: new Stroke({ color: \"blue\", width: 1 })\r\n });\r\n }\r\n });\r\n\r\nconst visualizeBuffers = (features: Feature[]) => getMap().addLayer(createVectorLayer(new VectorSource({ features })));\r\n\r\nexport const replaceUrlParam = (paramName: string, paramValue: string): string => {\r\n let url = window.location.href;\r\n const pattern = new RegExp(\"\\\\b(\" + paramName + \"=).*?(&|#|$)\");\r\n if (url.search(pattern) >= 0) {\r\n return url.replace(pattern, \"$1\" + paramValue + \"$2\");\r\n }\r\n url = url.replace(/[?#]$/, \"\");\r\n return url + (url.indexOf(\"?\") > 0 ? \"&\" : \"?\") + paramName + \"=\" + paramValue;\r\n};\r\n\r\nexport const decodeFeatureFields = (feature: Feature, fields: IEsriFieldInfo[]): Feature => {\r\n const attributes = Object.entries(feature.getProperties())\r\n .map(([fieldName, fieldValue]) => {\r\n const fieldInfo = fields && fields.find((field) => field.name === fieldName);\r\n const domainValue =\r\n fieldInfo &&\r\n fieldInfo.domain &&\r\n fieldInfo.domain.codedValues &&\r\n fieldInfo.domain.codedValues.find((cv) => cv.code === fieldValue);\r\n\r\n return fieldInfo ? [fieldInfo.alias, (domainValue && domainValue.name) || fieldValue] : null;\r\n })\r\n .filter((f) => f);\r\n\r\n const attributeObj = Object.fromEntries(attributes);\r\n\r\n const newFeature = new Feature(feature.getGeometry());\r\n newFeature.setProperties(attributeObj);\r\n\r\n return newFeature;\r\n};\r\n\r\nexport const debounce = (func, delay: number) => {\r\n let timeoutId;\r\n\r\n return function (...args) {\r\n clearTimeout(timeoutId);\r\n timeoutId = setTimeout(() => func.apply(this, args), delay);\r\n };\r\n};\r\n\r\nexport const getUrlParam = (param: string): string => {\r\n const url = new URL(window.location.href);\r\n const params = new URLSearchParams(url.search.slice(1));\r\n\r\n return params.get(param);\r\n};\r\n\r\nexport const roundToPlaceValue = (number: number): number => {\r\n // example: 3980000 => 4000000 etc\r\n const placeValue = Math.floor(number).toString().length - 1;\r\n const factor = 10 ** placeValue;\r\n\r\n return Math.round(number / factor) * factor;\r\n};\r\n\r\nexport const deepClone = (obj) => {\r\n if (obj === null || typeof obj !== \"object\") {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const cloneArray = [];\r\n for (let i = 0; i < obj.length; i++) {\r\n cloneArray[i] = deepClone(obj[i]);\r\n }\r\n return cloneArray;\r\n }\r\n\r\n const cloneObj = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n cloneObj[key] = deepClone(obj[key]);\r\n }\r\n }\r\n return cloneObj;\r\n};\r\n\r\nexport const deepCloneWithChanges = (obj, changes = []) => {\r\n // Example for `changes` parameter:\r\n // const changes = [\r\n // { key: 'age', remove: true }, // Remove the 'age' key\r\n // { key: 'name', value: 'Janis' }, // Change the 'name' value to 'Janis'\r\n // { key: 'hobbies', remove: true }, // Remove the 'hobbies' key\r\n // { key: 'country', value: 'LV' }, // Add a new key 'country' with value 'LV'\r\n // ];\r\n if (obj === null || typeof obj !== \"object\") {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const cloneArray = [];\r\n for (let i = 0; i < obj.length; i++) {\r\n cloneArray[i] = deepCloneWithChanges(obj[i], changes);\r\n }\r\n return cloneArray;\r\n }\r\n\r\n const cloneObj = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n let clonedValue = deepCloneWithChanges(obj[key], changes);\r\n for (const change of changes) {\r\n if (change.key === key) {\r\n if (change.remove) {\r\n clonedValue = undefined;\r\n } else if (typeof change.value !== \"undefined\") {\r\n clonedValue = change.value;\r\n }\r\n }\r\n }\r\n if (typeof clonedValue !== \"undefined\") {\r\n cloneObj[key] = clonedValue;\r\n }\r\n }\r\n }\r\n return cloneObj;\r\n};\r\n\r\nexport const deepCloneWithConditionalChanges = (obj, changes = []) => {\r\n // Example for `changes` parameter:\r\n // const changes = [\r\n // { key: 'age', value: 25, condition: 30 }, // Change 'age' to 25 if it's currently 30\r\n // { key: 'name', value: 'Jane', condition: 'John' }, // Change 'name' to 'Jane' if it's currently 'John'\r\n // { key: 'city', value: 'New York', condition: 'Exampleville' }, // Change 'city' to 'New York' if it's currently 'Exampleville'\r\n // ];\r\n if (obj === null || typeof obj !== \"object\") {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const cloneArray = [];\r\n for (let i = 0; i < obj.length; i++) {\r\n cloneArray[i] = deepCloneWithConditionalChanges(obj[i], changes);\r\n }\r\n return cloneArray;\r\n }\r\n\r\n const cloneObj = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n let clonedValue = deepCloneWithConditionalChanges(obj[key], changes);\r\n for (const change of changes) {\r\n if (change.key === key) {\r\n if (change.remove) {\r\n clonedValue = undefined;\r\n } else if (\r\n typeof change.value !== \"undefined\" &&\r\n (!change.condition || obj[key] === change.condition)\r\n ) {\r\n clonedValue = change.value;\r\n }\r\n }\r\n }\r\n if (typeof clonedValue !== \"undefined\") {\r\n cloneObj[key] = clonedValue;\r\n }\r\n }\r\n }\r\n return cloneObj;\r\n};\r\n\r\nexport const replaceFieldsWithValues = (feature: FeatureLike, text?: string, fields?: IEsriFieldInfo[]): string => {\r\n if (!text) {\r\n return;\r\n }\r\n const replacedWithValues = text.replace(/[^{}]+(?=})/g, (matched: string) => {\r\n const fieldInfo = fields && fields.find((field) => field.name === matched);\r\n if (fieldInfo && fieldInfo.domain && fieldInfo.domain.type === \"codedValue\") {\r\n const codedValue = fieldInfo.domain.codedValues.find((cv) => cv.code === feature.get(matched));\r\n return codedValue && codedValue.name;\r\n }\r\n return feature.get(matched);\r\n });\r\n\r\n return replacedWithValues\r\n .replace(/{undefined}/g, \"\")\r\n .replace(/{null}/g, \"\")\r\n .replace(/[{}]/g, \"\");\r\n};\r\n\r\n// Step 1: Extract placeholder values between {}\r\nconst placeholderPattern = /\\{([^}]+)\\}/g;\r\n// Step 2: Extract calculation values between $ and $\r\nconst calculationPattern = /\\$([^$]+)\\$/g;\r\n\r\nexport const replaceFieldsWithCalculations = (\r\n feature: FeatureLike,\r\n text?: string,\r\n fields?: IEsriFieldInfo[]\r\n): string => {\r\n if (!text) {\r\n return;\r\n }\r\n\r\n const placeholderMatches = Array.from(text.matchAll(placeholderPattern), (match) => match[1]);\r\n if (!placeholderMatches?.length) {\r\n return text;\r\n }\r\n\r\n let newText = text;\r\n placeholderMatches.map((match1) => {\r\n const calculationMatches = Array.from(match1.matchAll(calculationPattern), (match) => match[1]);\r\n\r\n if (calculationMatches.length) {\r\n const [field, operation, precision] = calculationMatches[0].split(\",\");\r\n if (operation === \"Round\") {\r\n newText = newText.replace(\r\n \"{\" + match1 + \"}\",\r\n Number(replaceValue(field, feature, fields)).toFixed(Number(precision))\r\n );\r\n }\r\n } else {\r\n newText = newText.replace(\"{\" + match1 + \"}\", replaceValue(match1, feature, fields));\r\n }\r\n });\r\n\r\n return newText;\r\n};\r\n\r\nconst replaceValue = (text: string, feature: FeatureLike, fields?: IEsriFieldInfo[]) => {\r\n let decoded = feature.get(text);\r\n const fieldInfo = fields && fields.find((field) => field.name === text);\r\n if (fieldInfo && fieldInfo.domain && fieldInfo.domain.type === \"codedValue\") {\r\n const codedValue = fieldInfo.domain.codedValues.find((cv) => cv.code === feature.get(text));\r\n decoded = codedValue && codedValue.name;\r\n }\r\n\r\n return decoded === \"undefined\" || decoded === \"null\" || decoded === \"{}\" ? \"\" : decoded;\r\n};\r\n","import * as React from \"react\";\r\nimport { FC } from \"react\";\r\nimport { PopupBody, PopupHeader, Popup, PopupFooter } from \"./Popup\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { CloseButton } from \"../Elements/CloseButton\";\r\nimport { useMapContext } from \"../Contexts/MapContext\";\r\n\r\nexport const HelpPopup: FC = () => {\r\n const { isMobile } = useAppContext();\r\n const { setDrawingInfoVisible } = useMapContext();\r\n\r\n const text1 = \"Norādiet kartē pasākuma norises vietu un ar to saistītos objektus.\";\r\n const text2 =\r\n \"Pasākuma maršruta datus var iezīmēt kartē kā līnijveida un laukumveida objektus vai pievienot kā pielikumu pieteikuma pēdējā solī (gpx, kml vai citā datu formā).\";\r\n const text3 = \"Interesējošo kartes apgabalu iespējams pietuvināt meklētājā norādot novadu vai pagastu.\";\r\n\r\n return (\r\n \r\n \r\n {!isMobile &&
    Iezīmēt pasākuma norises vietu
    }\r\n setDrawingInfoVisible(false)}>\r\n
    \r\n \r\n
    {text1}
    \r\n
    {text2}
    \r\n
    {text3}
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport Portal from \"../Portal\";\r\n\r\nexport interface IInfo {\r\n text?: string;\r\n xy?: number[];\r\n}\r\n\r\nexport const Info = (): JSX.Element => {\r\n const { info, setInfo } = useAppContext();\r\n\r\n const position = info &&\r\n info.xy &&\r\n info.xy.length && {\r\n transform: \"translate(\" + Math.round(info.xy[0] - 10) + \"px, \" + Math.round(info.xy[1]) + \"px)\"\r\n };\r\n\r\n return info && info.text ? (\r\n \r\n
    setInfo(null)}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n ) : null;\r\n};\r\n","import * as React from \"react\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport \"./Info.scss\";\r\n\r\nexport const InfoButton = ({ text }: { text: string }): JSX.Element => {\r\n const { setInfo } = useAppContext();\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n e.nativeEvent.preventDefault();\r\n setInfo({ text: text, xy: [e.clientX, e.clientY] });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { FC, useRef } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport Draggable from \"react-draggable\";\r\nimport Portal from \"./Portal\";\r\nimport \"./Popup.scss\";\r\n\r\nexport interface IPopupProps {\r\n id: string;\r\n isMobile: boolean;\r\n hasBackdrop?: boolean;\r\n className?: string;\r\n defaultPosition?: { x: number; y: number };\r\n notDraggable?: boolean;\r\n sameContainer?: boolean;\r\n hasShadow?: boolean;\r\n onDrag?: () => void;\r\n}\r\n\r\nexport const Popup: FC = (props) => {\r\n const popupRef = useRef();\r\n\r\n const mapHeight = document.getElementById(\"geolite-map\").clientHeight;\r\n const newHeight = mapHeight - 150 < popupRef?.current?.clientHeight && mapHeight - 75;\r\n newHeight && (popupRef.current.style.maxHeight = newHeight + \"px\");\r\n\r\n return props.isMobile ? (\r\n
    \r\n
    {props.children}
    \r\n
    \r\n ) : props.sameContainer ? (\r\n
    \r\n {props.hasBackdrop &&
    }\r\n
    \r\n
    \r\n {props.children}\r\n
    \r\n
    \r\n
    \r\n ) : (\r\n \r\n {props.hasBackdrop &&
    }\r\n
    \r\n
    \r\n {props.notDraggable ? (\r\n
    \r\n {props.children}\r\n
    \r\n ) : (\r\n \r\n
    \r\n \r\n {props.children}\r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const PopupHeader: FC<{ isMobile: boolean; children?: React.ReactNode }> = (props) => {\r\n return props.isMobile ? (\r\n
    {props.children}
    \r\n ) : (\r\n
    \r\n
    {props.children}
    \r\n
    \r\n );\r\n};\r\n\r\nexport const PopupBody: FC<{ isMobile: boolean; children?: React.ReactNode }> = (props) => {\r\n return props.isMobile ? (\r\n
    {props.children}
    \r\n ) : (\r\n
    \r\n
    {props.children}
    \r\n
    \r\n );\r\n};\r\n\r\nexport const PopupFooter: FC<{\r\n isMobile: boolean;\r\n onClick?: ({ position, contentWidth }: { position: number[]; contentWidth: number }) => void;\r\n children?: React.ReactNode;\r\n}> = (props) => {\r\n const footerRef = useRef();\r\n\r\n const onClick = (e) => {\r\n if (!footerRef.current) {\r\n return;\r\n }\r\n\r\n const element = footerRef.current.getBoundingClientRect();\r\n props.onClick({\r\n position: [element.x + element.width / 2, element.y],\r\n contentWidth: e.target.firstChild.clientWidth\r\n });\r\n };\r\n\r\n return props.isMobile ? (\r\n
    \r\n {props.children}\r\n
    \r\n ) : (\r\n
    \r\n
    {props.children}
    \r\n
    \r\n );\r\n};\r\n","import classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport \"./PopupHeaderButton.scss\";\r\n\r\nexport interface IPopupHeaderButton {\r\n iconClassName: string;\r\n className?: string;\r\n title?: string;\r\n onClick: () => void;\r\n}\r\n\r\nexport const PopupHeaderButton = ({ iconClassName, onClick, className, title }: IPopupHeaderButton): JSX.Element => (\r\n
    \r\n \r\n
    \r\n);\r\n","import { memo, useEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\ninterface IPortalProps {\r\n id?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst Portal = ({ id, children }: IPortalProps) => {\r\n const el = useRef(document.getElementById(id) || document.createElement(\"div\"));\r\n const [dynamic] = useState(!el.current.parentElement);\r\n useEffect(() => {\r\n if (dynamic) {\r\n el.current.id = id;\r\n document.body.appendChild(el.current);\r\n }\r\n return () => {\r\n if (dynamic && el.current.parentElement) {\r\n el.current.parentElement.removeChild(el.current);\r\n }\r\n };\r\n }, [dynamic, id]);\r\n return createPortal(children, el.current);\r\n};\r\nexport default memo(Portal);\r\n","import * as React from \"react\";\r\nimport { FC } from \"react\";\r\nimport { Feature } from \"ol\";\r\nimport { MapContextProvider } from \"../Contexts/MapContext\";\r\nimport { MapDownloadContextProvider } from \"../Contexts/MapDownloadContext\";\r\nimport { Info } from \"../Popups/Info/Info\";\r\nimport { Toast } from \"../Elements/Toast\";\r\nimport { GeoLiteMap } from \"../Map/GeoLiteMap\";\r\nimport \"../css/icons/style.css\";\r\nimport \"../css/map.scss\";\r\nimport \"../css/App.scss\";\r\nimport \"ol/ol.css\";\r\n\r\nexport interface IMapProps {\r\n features: Feature[] | null;\r\n forceUpdate: number;\r\n}\r\n\r\nexport const MapProvider: FC = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n {/* {info ? : null} */}\r\n \r\n \r\n\r\n \r\n\r\n {/* this is for cluster label width measuring */}\r\n
    \r\n \r\n );\r\n};\r\n","import \"elm-pep\";\r\nexport * from \"./Providers/mapProvider\";\r\nexport { renderMap } from \"./renderMap\";\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport proj4 from \"proj4\";\r\nimport { register } from \"ol/proj/proj4\";\r\nimport { get as getProjection } from \"ol/proj\";\r\nimport { AppContextProvider } from \"./Contexts/AppContext\";\r\nimport { MapProvider } from \"./Providers/mapProvider\";\r\nimport Favicon from \"../src/img/LVM_GEO_logo_128.jpg\";\r\nimport { getConfig } from \"./Map/config\";\r\nimport { i18n } from \"./Map/i18n\";\r\n\r\nproj4.defs(\r\n \"EPSG:3059\",\r\n \"+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +axis=neu\"\r\n);\r\nregister(proj4);\r\ngetProjection(\"EPSG:3059\").setExtent([-1349424.723447654, -595003.4846995564, 2424864.0751299444, 1206812.6189326514]);\r\n\r\n// need to import image, or webpack will not copy image file to the dist folder\r\nconst favicon = Favicon;\r\n\r\nexport const renderMap = async (): Promise => {\r\n const target = document.getElementById(\"geolite-map\");\r\n const isIFrame = iniFrame();\r\n const isMobileDevice =\r\n navigator.maxTouchPoints > 0 || navigator.platform === \"iPhone\" || navigator.platform === \"iPad\" || isIFrame;\r\n isMobileDevice && target.classList.add(\"mobile\");\r\n isIFrame && target.classList.add(\"iframe\");\r\n\r\n await getConfig().then((config) => i18n(config.language).then(() => config));\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n target\r\n );\r\n};\r\n\r\nconst iniFrame = () => {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n};\r\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","function countSubstring(string, substring) {\n const pattern = new RegExp(substring, \"g\");\n const match = string.match(pattern);\n return match ? match.length : 0;\n}\n\nmodule.exports = countSubstring;\nmodule.exports.default = countSubstring;\n","const indexOfMatch = require(\"./index-of-match.js\");\nconst indexOfMatchEnd = require(\"./index-of-match-end.js\");\nconst countSubstring = require(\"./count-substring.js\");\n\nfunction findTagByName(xml, tagName, options) {\n const debug = (options && options.debug) || false;\n const nested = !(options && typeof options.nested === false);\n\n const startIndex = (options && options.startIndex) || 0;\n\n if (debug) console.log(\"[xml-utils] starting findTagByName with\", tagName, \" and \", options);\n\n const start = indexOfMatch(xml, `\\<${tagName}[ \\n\\>\\/]`, startIndex);\n if (debug) console.log(\"[xml-utils] start:\", start);\n if (start === -1) return undefined;\n\n const afterStart = xml.slice(start + tagName.length);\n\n let relativeEnd = indexOfMatchEnd(afterStart, \"^[^<]*[ /]>\", 0);\n\n const selfClosing = relativeEnd !== -1 && afterStart[relativeEnd - 1] === \"/\";\n if (debug) console.log(\"[xml-utils] selfClosing:\", selfClosing);\n\n if (selfClosing === false) {\n // check if tag has subtags with the same name\n if (nested) {\n let startIndex = 0;\n let openings = 1;\n let closings = 0;\n while ((relativeEnd = indexOfMatchEnd(afterStart, \"[ /]\" + tagName + \">\", startIndex)) !== -1) {\n const clip = afterStart.substring(startIndex, relativeEnd + 1);\n openings += countSubstring(clip, \"<\" + tagName + \"[ \\n\\t>]\");\n closings += countSubstring(clip, \"\");\n // we can't have more openings than closings\n if (closings >= openings) break;\n startIndex = relativeEnd;\n }\n } else {\n relativeEnd = indexOfMatchEnd(afterStart, \"[ /]\" + tagName + \">\", 0);\n }\n }\n\n const end = start + tagName.length + relativeEnd + 1;\n if (debug) console.log(\"[xml-utils] end:\", end);\n if (end === -1) return undefined;\n\n const outer = xml.slice(start, end);\n // tag is like urn:ogc:def:crs:EPSG::32617\n\n let inner;\n if (selfClosing) {\n inner = null;\n } else {\n inner = outer.slice(outer.indexOf(\">\") + 1, outer.lastIndexOf(\"<\"));\n }\n\n return { inner, outer, start, end };\n}\n\nmodule.exports = findTagByName;\nmodule.exports.default = findTagByName;\n","const findTagByName = require(\"./find-tag-by-name.js\");\n\nfunction findTagsByName(xml, tagName, options) {\n const tags = [];\n const debug = (options && options.debug) || false;\n const nested = options && typeof options.nested === \"boolean\" ? options.nested : true;\n let startIndex = (options && options.startIndex) || 0;\n let tag;\n while ((tag = findTagByName(xml, tagName, { debug, startIndex }))) {\n if (nested) {\n startIndex = tag.start + 1 + tagName.length;\n } else {\n startIndex = tag.end;\n }\n tags.push(tag);\n }\n if (debug) console.log(\"findTagsByName found\", tags.length, \"tags\");\n return tags;\n}\n\nmodule.exports = findTagsByName;\nmodule.exports.default = findTagsByName;\n","function getAttribute(tag, attributeName, options) {\n const debug = (options && options.debug) || false;\n if (debug) console.log(\"[xml-utils] getting \" + attributeName + \" in \" + tag);\n\n const xml = typeof tag === \"object\" ? tag.outer : tag;\n\n // only search for attributes in the opening tag\n const opening = xml.slice(0, xml.indexOf(\">\") + 1);\n\n const quotechars = ['\"', \"'\"];\n for (let i = 0; i < quotechars.length; i++) {\n const char = quotechars[i];\n const pattern = attributeName + \"\\\\=\" + char + \"([^\" + char + \"]*)\" + char;\n if (debug) console.log(\"[xml-utils] pattern:\", pattern);\n\n const re = new RegExp(pattern);\n const match = re.exec(opening);\n if (debug) console.log(\"[xml-utils] match:\", match);\n if (match) return match[1];\n }\n}\n\nmodule.exports = getAttribute;\nmodule.exports.default = getAttribute;\n","function indexOfMatchEnd(xml, pattern, startIndex) {\n const re = new RegExp(pattern);\n const match = re.exec(xml.slice(startIndex));\n if (match) return startIndex + match.index + match[0].length - 1;\n else return -1;\n}\n\nmodule.exports = indexOfMatchEnd;\nmodule.exports.default = indexOfMatchEnd;\n","function indexOfMatch(xml, pattern, startIndex) {\n const re = new RegExp(pattern);\n const match = re.exec(xml.slice(startIndex));\n if (match) return startIndex + match.index;\n else return -1;\n}\n\nmodule.exports = indexOfMatch;\nmodule.exports.default = indexOfMatch;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\nmodule.exports = _toArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var fetchApi\nif (typeof fetch === 'function') {\n if (typeof global !== 'undefined' && global.fetch) {\n fetchApi = global.fetch\n } else if (typeof window !== 'undefined' && window.fetch) {\n fetchApi = window.fetch\n } else {\n fetchApi = fetch\n }\n}\n\nif (typeof require !== 'undefined' && (typeof window === 'undefined' || typeof window.document === 'undefined')) {\n var f = fetchApi || require('cross-fetch')\n if (f.default) f = f.default\n exports.default = f\n module.exports = exports.default\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _utils = require(\"./utils.js\");\nvar _request = _interopRequireDefault(require(\"./request.js\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar getDefaults = function getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: function parse(data) {\n return JSON.parse(data);\n },\n stringify: JSON.stringify,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n request: _request.default,\n reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n customHeaders: {},\n queryStringParams: {},\n crossDomain: false,\n withCredentials: false,\n overrideMimeType: false,\n requestOptions: {\n mode: 'cors',\n credentials: 'same-origin',\n cache: 'default'\n }\n };\n};\nvar Backend = function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, Backend);\n this.services = services;\n this.options = options;\n this.allOptions = allOptions;\n this.type = 'backend';\n this.init(services, options, allOptions);\n }\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = (0, _utils.defaults)(options, this.options || {}, getDefaults());\n this.allOptions = allOptions;\n if (this.services && this.options.reloadInterval) {\n setInterval(function () {\n return _this.reload();\n }, this.options.reloadInterval);\n }\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n this._readAny(languages, languages, namespaces, namespaces, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n this._readAny([language], language, [namespace], namespace, callback);\n }\n }, {\n key: \"_readAny\",\n value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n var _this2 = this;\n var loadPath = this.options.loadPath;\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n loadPath = (0, _utils.makePromise)(loadPath);\n loadPath.then(function (resolvedLoadPath) {\n if (!resolvedLoadPath) return callback(null, {});\n var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n });\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback, languages, namespaces) {\n var _this3 = this;\n this.options.request(this.options, url, undefined, function (err, res) {\n if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n if (err) return callback(err, false);\n var ret, parseErr;\n try {\n if (typeof res.data === 'string') {\n ret = _this3.options.parse(res.data, languages, namespaces);\n } else {\n ret = res.data;\n }\n } catch (e) {\n parseErr = 'failed parsing ' + url + ' to json';\n }\n if (parseErr) return callback(parseErr, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue, callback) {\n var _this4 = this;\n if (!this.options.addPath) return;\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n var finished = 0;\n var dataArray = [];\n var resArray = [];\n languages.forEach(function (lng) {\n var addPath = _this4.options.addPath;\n if (typeof _this4.options.addPath === 'function') {\n addPath = _this4.options.addPath(lng, namespace);\n }\n var url = _this4.services.interpolator.interpolate(addPath, {\n lng: lng,\n ns: namespace\n });\n _this4.options.request(_this4.options, url, payload, function (data, res) {\n finished += 1;\n dataArray.push(data);\n resArray.push(res);\n if (finished === languages.length) {\n if (typeof callback === 'function') callback(dataArray, resArray);\n }\n });\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this5 = this;\n var _this$services = this.services,\n backendConnector = _this$services.backendConnector,\n languageUtils = _this$services.languageUtils,\n logger = _this$services.logger;\n var currentLanguage = backendConnector.language;\n if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n var toLoad = [];\n var append = function append(lng) {\n var lngs = languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n append(currentLanguage);\n if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n return append(l);\n });\n toLoad.forEach(function (lng) {\n _this5.allOptions.ns.forEach(function (ns) {\n backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n });\n });\n });\n }\n }]);\n return Backend;\n}();\nBackend.type = 'backend';\nvar _default = Backend;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _utils = require(\"./utils.js\");\nvar fetchNode = _interopRequireWildcard(require(\"./getFetch.js\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar fetchApi;\nif (typeof fetch === 'function') {\n if (typeof global !== 'undefined' && global.fetch) {\n fetchApi = global.fetch;\n } else if (typeof window !== 'undefined' && window.fetch) {\n fetchApi = window.fetch;\n } else {\n fetchApi = fetch;\n }\n}\nvar XmlHttpRequestApi;\nif ((0, _utils.hasXMLHttpRequest)()) {\n if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n XmlHttpRequestApi = global.XMLHttpRequest;\n } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n XmlHttpRequestApi = window.XMLHttpRequest;\n }\n}\nvar ActiveXObjectApi;\nif (typeof ActiveXObject === 'function') {\n if (typeof global !== 'undefined' && global.ActiveXObject) {\n ActiveXObjectApi = global.ActiveXObject;\n } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n ActiveXObjectApi = window.ActiveXObject;\n }\n}\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\nvar addQueryString = function addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '';\n for (var paramName in params) {\n queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n }\n if (!queryString) return url;\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n return url;\n};\nvar fetchIt = function fetchIt(url, fetchOptions, callback) {\n fetchApi(url, fetchOptions).then(function (response) {\n if (!response.ok) return callback(response.statusText || 'Error', {\n status: response.status\n });\n response.text().then(function (data) {\n callback(null, {\n status: response.status,\n data: data\n });\n }).catch(callback);\n }).catch(callback);\n};\nvar omitFetchOptions = false;\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n var headers = (0, _utils.defaults)({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n if (payload) headers['Content-Type'] = 'application/json';\n var reqOptions = typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions;\n var fetchOptions = (0, _utils.defaults)({\n method: payload ? 'POST' : 'GET',\n body: payload ? options.stringify(payload) : undefined,\n headers: headers\n }, omitFetchOptions ? {} : reqOptions);\n try {\n fetchIt(url, fetchOptions, callback);\n } catch (e) {\n if (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf('not implemented') < 0) {\n return callback(e);\n }\n try {\n Object.keys(reqOptions).forEach(function (opt) {\n delete fetchOptions[opt];\n });\n fetchIt(url, fetchOptions, callback);\n omitFetchOptions = true;\n } catch (err) {\n callback(err);\n }\n }\n};\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n if (payload && _typeof(payload) === 'object') {\n payload = addQueryString('', payload).slice(1);\n }\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n try {\n var x;\n if (XmlHttpRequestApi) {\n x = new XmlHttpRequestApi();\n } else {\n x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n }\n x.open(payload ? 'POST' : 'GET', url, 1);\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n x.withCredentials = !!options.withCredentials;\n if (payload) {\n x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n if (x.overrideMimeType) {\n x.overrideMimeType('application/json');\n }\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n x.onreadystatechange = function () {\n x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n status: x.status,\n data: x.responseText\n });\n };\n x.send(payload);\n } catch (e) {\n console && console.log(e);\n }\n};\nvar request = function request(options, url, payload, callback) {\n if (typeof payload === 'function') {\n callback = payload;\n payload = undefined;\n }\n callback = callback || function () {};\n if (fetchApi && url.indexOf('file:') !== 0) {\n return requestWithFetch(options, url, payload, callback);\n }\n if ((0, _utils.hasXMLHttpRequest)() || typeof ActiveXObject === 'function') {\n return requestWithXmlHttpRequest(options, url, payload, callback);\n }\n callback(new Error('No fetch and no xhr implementation found!'));\n};\nvar _default = request;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaults = defaults;\nexports.hasXMLHttpRequest = hasXMLHttpRequest;\nexports.makePromise = makePromise;\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nfunction hasXMLHttpRequest() {\n return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\nfunction isPromise(maybePromise) {\n return !!maybePromise && typeof maybePromise.then === 'function';\n}\nfunction makePromise(maybePromise) {\n if (isPromise(maybePromise)) {\n return maybePromise;\n }\n return Promise.resolve(maybePromise);\n}","export const fieldTagNames = {\n // TIFF Baseline\n 0x013B: 'Artist',\n 0x0102: 'BitsPerSample',\n 0x0109: 'CellLength',\n 0x0108: 'CellWidth',\n 0x0140: 'ColorMap',\n 0x0103: 'Compression',\n 0x8298: 'Copyright',\n 0x0132: 'DateTime',\n 0x0152: 'ExtraSamples',\n 0x010A: 'FillOrder',\n 0x0121: 'FreeByteCounts',\n 0x0120: 'FreeOffsets',\n 0x0123: 'GrayResponseCurve',\n 0x0122: 'GrayResponseUnit',\n 0x013C: 'HostComputer',\n 0x010E: 'ImageDescription',\n 0x0101: 'ImageLength',\n 0x0100: 'ImageWidth',\n 0x010F: 'Make',\n 0x0119: 'MaxSampleValue',\n 0x0118: 'MinSampleValue',\n 0x0110: 'Model',\n 0x00FE: 'NewSubfileType',\n 0x0112: 'Orientation',\n 0x0106: 'PhotometricInterpretation',\n 0x011C: 'PlanarConfiguration',\n 0x0128: 'ResolutionUnit',\n 0x0116: 'RowsPerStrip',\n 0x0115: 'SamplesPerPixel',\n 0x0131: 'Software',\n 0x0117: 'StripByteCounts',\n 0x0111: 'StripOffsets',\n 0x00FF: 'SubfileType',\n 0x0107: 'Threshholding',\n 0x011A: 'XResolution',\n 0x011B: 'YResolution',\n\n // TIFF Extended\n 0x0146: 'BadFaxLines',\n 0x0147: 'CleanFaxData',\n 0x0157: 'ClipPath',\n 0x0148: 'ConsecutiveBadFaxLines',\n 0x01B1: 'Decode',\n 0x01B2: 'DefaultImageColor',\n 0x010D: 'DocumentName',\n 0x0150: 'DotRange',\n 0x0141: 'HalftoneHints',\n 0x015A: 'Indexed',\n 0x015B: 'JPEGTables',\n 0x011D: 'PageName',\n 0x0129: 'PageNumber',\n 0x013D: 'Predictor',\n 0x013F: 'PrimaryChromaticities',\n 0x0214: 'ReferenceBlackWhite',\n 0x0153: 'SampleFormat',\n 0x0154: 'SMinSampleValue',\n 0x0155: 'SMaxSampleValue',\n 0x022F: 'StripRowCounts',\n 0x014A: 'SubIFDs',\n 0x0124: 'T4Options',\n 0x0125: 'T6Options',\n 0x0145: 'TileByteCounts',\n 0x0143: 'TileLength',\n 0x0144: 'TileOffsets',\n 0x0142: 'TileWidth',\n 0x012D: 'TransferFunction',\n 0x013E: 'WhitePoint',\n 0x0158: 'XClipPathUnits',\n 0x011E: 'XPosition',\n 0x0211: 'YCbCrCoefficients',\n 0x0213: 'YCbCrPositioning',\n 0x0212: 'YCbCrSubSampling',\n 0x0159: 'YClipPathUnits',\n 0x011F: 'YPosition',\n\n // EXIF\n 0x9202: 'ApertureValue',\n 0xA001: 'ColorSpace',\n 0x9004: 'DateTimeDigitized',\n 0x9003: 'DateTimeOriginal',\n 0x8769: 'Exif IFD',\n 0x9000: 'ExifVersion',\n 0x829A: 'ExposureTime',\n 0xA300: 'FileSource',\n 0x9209: 'Flash',\n 0xA000: 'FlashpixVersion',\n 0x829D: 'FNumber',\n 0xA420: 'ImageUniqueID',\n 0x9208: 'LightSource',\n 0x927C: 'MakerNote',\n 0x9201: 'ShutterSpeedValue',\n 0x9286: 'UserComment',\n\n // IPTC\n 0x83BB: 'IPTC',\n\n // ICC\n 0x8773: 'ICC Profile',\n\n // XMP\n 0x02BC: 'XMP',\n\n // GDAL\n 0xA480: 'GDAL_METADATA',\n 0xA481: 'GDAL_NODATA',\n\n // Photoshop\n 0x8649: 'Photoshop',\n\n // GeoTiff\n 0x830E: 'ModelPixelScale',\n 0x8482: 'ModelTiepoint',\n 0x85D8: 'ModelTransformation',\n 0x87AF: 'GeoKeyDirectory',\n 0x87B0: 'GeoDoubleParams',\n 0x87B1: 'GeoAsciiParams',\n\n // LERC\n 0xC5F2: 'LercParameters',\n};\n\nexport const fieldTags = {};\nfor (const key in fieldTagNames) {\n if (fieldTagNames.hasOwnProperty(key)) {\n fieldTags[fieldTagNames[key]] = parseInt(key, 10);\n }\n}\n\nexport const fieldTagTypes = {\n 256: 'SHORT',\n 257: 'SHORT',\n 258: 'SHORT',\n 259: 'SHORT',\n 262: 'SHORT',\n 273: 'LONG',\n 274: 'SHORT',\n 277: 'SHORT',\n 278: 'LONG',\n 279: 'LONG',\n 282: 'RATIONAL',\n 283: 'RATIONAL',\n 284: 'SHORT',\n 286: 'SHORT',\n 287: 'RATIONAL',\n 296: 'SHORT',\n 297: 'SHORT',\n 305: 'ASCII',\n 306: 'ASCII',\n 338: 'SHORT',\n 339: 'SHORT',\n 513: 'LONG',\n 514: 'LONG',\n 1024: 'SHORT',\n 1025: 'SHORT',\n 2048: 'SHORT',\n 2049: 'ASCII',\n 3072: 'SHORT',\n 3073: 'ASCII',\n 33550: 'DOUBLE',\n 33922: 'DOUBLE',\n 34665: 'LONG',\n 34735: 'SHORT',\n 34737: 'ASCII',\n 42113: 'ASCII',\n};\n\nexport const arrayFields = [\n fieldTags.BitsPerSample,\n fieldTags.ExtraSamples,\n fieldTags.SampleFormat,\n fieldTags.StripByteCounts,\n fieldTags.StripOffsets,\n fieldTags.StripRowCounts,\n fieldTags.TileByteCounts,\n fieldTags.TileOffsets,\n fieldTags.SubIFDs,\n];\n\nexport const fieldTypeNames = {\n 0x0001: 'BYTE',\n 0x0002: 'ASCII',\n 0x0003: 'SHORT',\n 0x0004: 'LONG',\n 0x0005: 'RATIONAL',\n 0x0006: 'SBYTE',\n 0x0007: 'UNDEFINED',\n 0x0008: 'SSHORT',\n 0x0009: 'SLONG',\n 0x000A: 'SRATIONAL',\n 0x000B: 'FLOAT',\n 0x000C: 'DOUBLE',\n // IFD offset, suggested by https://owl.phy.queensu.ca/~phil/exiftool/standards.html\n 0x000D: 'IFD',\n // introduced by BigTIFF\n 0x0010: 'LONG8',\n 0x0011: 'SLONG8',\n 0x0012: 'IFD8',\n};\n\nexport const fieldTypes = {};\nfor (const key in fieldTypeNames) {\n if (fieldTypeNames.hasOwnProperty(key)) {\n fieldTypes[fieldTypeNames[key]] = parseInt(key, 10);\n }\n}\n\nexport const photometricInterpretations = {\n WhiteIsZero: 0,\n BlackIsZero: 1,\n RGB: 2,\n Palette: 3,\n TransparencyMask: 4,\n CMYK: 5,\n YCbCr: 6,\n\n CIELab: 8,\n ICCLab: 9,\n};\n\nexport const ExtraSamplesValues = {\n Unspecified: 0,\n Assocalpha: 1,\n Unassalpha: 2,\n};\n\nexport const LercParameters = {\n Version: 0,\n AddCompression: 1,\n};\n\nexport const LercAddCompression = {\n None: 0,\n Deflate: 1,\n};\n\nexport const geoKeyNames = {\n 1024: 'GTModelTypeGeoKey',\n 1025: 'GTRasterTypeGeoKey',\n 1026: 'GTCitationGeoKey',\n 2048: 'GeographicTypeGeoKey',\n 2049: 'GeogCitationGeoKey',\n 2050: 'GeogGeodeticDatumGeoKey',\n 2051: 'GeogPrimeMeridianGeoKey',\n 2052: 'GeogLinearUnitsGeoKey',\n 2053: 'GeogLinearUnitSizeGeoKey',\n 2054: 'GeogAngularUnitsGeoKey',\n 2055: 'GeogAngularUnitSizeGeoKey',\n 2056: 'GeogEllipsoidGeoKey',\n 2057: 'GeogSemiMajorAxisGeoKey',\n 2058: 'GeogSemiMinorAxisGeoKey',\n 2059: 'GeogInvFlatteningGeoKey',\n 2060: 'GeogAzimuthUnitsGeoKey',\n 2061: 'GeogPrimeMeridianLongGeoKey',\n 2062: 'GeogTOWGS84GeoKey',\n 3072: 'ProjectedCSTypeGeoKey',\n 3073: 'PCSCitationGeoKey',\n 3074: 'ProjectionGeoKey',\n 3075: 'ProjCoordTransGeoKey',\n 3076: 'ProjLinearUnitsGeoKey',\n 3077: 'ProjLinearUnitSizeGeoKey',\n 3078: 'ProjStdParallel1GeoKey',\n 3079: 'ProjStdParallel2GeoKey',\n 3080: 'ProjNatOriginLongGeoKey',\n 3081: 'ProjNatOriginLatGeoKey',\n 3082: 'ProjFalseEastingGeoKey',\n 3083: 'ProjFalseNorthingGeoKey',\n 3084: 'ProjFalseOriginLongGeoKey',\n 3085: 'ProjFalseOriginLatGeoKey',\n 3086: 'ProjFalseOriginEastingGeoKey',\n 3087: 'ProjFalseOriginNorthingGeoKey',\n 3088: 'ProjCenterLongGeoKey',\n 3089: 'ProjCenterLatGeoKey',\n 3090: 'ProjCenterEastingGeoKey',\n 3091: 'ProjCenterNorthingGeoKey',\n 3092: 'ProjScaleAtNatOriginGeoKey',\n 3093: 'ProjScaleAtCenterGeoKey',\n 3094: 'ProjAzimuthAngleGeoKey',\n 3095: 'ProjStraightVertPoleLongGeoKey',\n 3096: 'ProjRectifiedGridAngleGeoKey',\n 4096: 'VerticalCSTypeGeoKey',\n 4097: 'VerticalCitationGeoKey',\n 4098: 'VerticalDatumGeoKey',\n 4099: 'VerticalUnitsGeoKey',\n};\n\nexport const geoKeys = {};\nfor (const key in geoKeyNames) {\n if (geoKeyNames.hasOwnProperty(key)) {\n geoKeys[geoKeyNames[key]] = parseInt(key, 10);\n }\n}\n","export default function(o, i) {\n return o.interfaces_ && o.interfaces_.indexOf(i) > -1\n}\n","export default function Serializable() {}\n","export default class Character {\n static isWhitespace(c) {\n return ((c <= 32 && c >= 0) || c === 127)\n }\n\n static toUpperCase(c) {\n return c.toUpperCase()\n }\n}\n","export default function Clonable() {}\n","export default function Comparable() {}\n","export default class Long {\n constructor(high, low) {\n this.low = low || 0\n this.high = high || 0\n }\n\n static toBinaryString(i) {\n let mask\n let result = ''\n for (mask = 0x80000000; mask > 0; mask >>>= 1)\n result += (i.high & mask) === mask ? '1' : '0'\n for (mask = 0x80000000; mask > 0; mask >>>= 1)\n result += (i.low & mask) === mask ? '1' : '0'\n return result\n }\n}\n","import Long from './Long.js'\n\nexport default function Double() { }\n\nDouble.NaN = NaN\nDouble.isNaN = n => Number.isNaN(n)\nDouble.isInfinite = n => !Number.isFinite(n)\nDouble.MAX_VALUE = Number.MAX_VALUE\nDouble.POSITIVE_INFINITY = Number.POSITIVE_INFINITY\nDouble.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY\n\nif (typeof Float64Array === 'function' &&\n typeof Int32Array === 'function')\n// Simple and fast conversion between double and long bits\n// using TypedArrays and ArrayViewBuffers.\n\n (function() {\n const EXP_BIT_MASK = 0x7ff00000\n const SIGNIF_BIT_MASK = 0xFFFFF\n const f64buf = new Float64Array(1)\n const i32buf = new Int32Array(f64buf.buffer)\n Double.doubleToLongBits = function(value) {\n f64buf[0] = value\n let low = i32buf[0] | 0\n let high = i32buf[1] | 0\n // Check for NaN based on values of bit fields, maximum\n // exponent and nonzero significand.\n if (((high & EXP_BIT_MASK) === EXP_BIT_MASK) &&\n ((high & SIGNIF_BIT_MASK) !== 0) &&\n (low !== 0)) {\n low = 0 | 0\n high = 0x7ff80000 | 0\n }\n return new Long(high, low)\n }\n Double.longBitsToDouble = function(bits) {\n i32buf[0] = bits.low\n i32buf[1] = bits.high\n return f64buf[0]\n }\n })()\nelse\n// More complex and slower fallback implementation using\n// math and the divide-by-two and multiply-by-two algorithms.\n\n (function() {\n const BIAS = 1023\n const log2 = Math.log2\n const floor = Math.floor\n const pow = Math.pow\n const MAX_REL_BITS_INTEGER = (function() {\n for (let i = 53; i > 0; i--) {\n const bits = pow(2, i) - 1\n if (floor(log2(bits)) + 1 === i) return bits\n }\n return 0\n })()\n Double.doubleToLongBits = function(value) {\n let x, y, f, bits, skip\n let sign, exp, high, low\n\n // Get the sign bit and absolute value.\n if (value < 0 || 1 / value === Number.NEGATIVE_INFINITY) {\n sign = (1 << 31)\n value = (-value)\n } else {\n sign = 0\n }\n\n // Handle some special values.\n if (value === 0) {\n // Handle zeros (+/-0).\n low = 0 | 0\n high = sign // exponent: 00..00, significand: 00..00\n return new Long(high, low)\n }\n\n if (value === Infinity) {\n // Handle infinity (only positive values for value possible).\n low = 0 | 0\n high = sign | 0x7ff00000 // exponent: 11..11, significand: 00..00\n return new Long(high, low)\n }\n\n if (value !== value) { // eslint-disable-line\n // Handle NaNs (boiled down to only one distinct NaN).\n low = 0 | 0\n high = 0x7ff80000 // exponent: 11..11, significand: 10..00\n return new Long(high, low)\n }\n\n // Preinitialize variables, that are not neccessarily set by\n // the algorithm.\n bits = 0\n low = 0 | 0\n\n // Get the (always positive) integer part of value.\n x = floor(value)\n\n // Process the integer part if it's greater than 1. Zero requires\n // no bits at all, 1 represents the implicit (hidden) leading bit,\n // which must not be written as well.\n if (x > 1)\n // If we can reliably determine the number of bits required for\n // the integer part,\n\n if (x <= MAX_REL_BITS_INTEGER) {\n // get the number of bits required to represent it minus 1\n bits = floor(log2(x)) /* + 1 - 1 */\n // and simply copy/shift the integer bits into low and high.\n // That's much faster than the divide-by-two algorithm (saves\n // up to ~60%).\n // We always need to mask out the most significant bit, which\n // is the implicit (aka hidden) bit.\n if (bits <= 20) {\n // The simple case in which the integer fits into the\n // lower 20 bits of the high word is worth to be handled\n // separately (saves ~25%).\n low = 0 | 0\n high = (x << (20 - bits)) & 0xfffff\n } else {\n // Here, the integer part is split into low and high.\n // Since its value may require more than 32 bits, we\n // cannot use bitwise operators (which implicitly cast\n // to Int32), but use arithmetic operators % and / to\n // get low and high parts. The uppper 20 bits go to high,\n // the remaining bits (in f) to low.\n f = bits - 20\n // Like (1 << f) but safe with even more than 32 bits.\n y = pow(2, f)\n low = (x % y) << (32 - f)\n high = (x / y) & 0xfffff\n }\n } else {\n // For greater values, we must use the much slower divide-by-two\n // algorithm. Bits are generated from right to left, that is from\n // least to most significant bit. For each bit, we left-shift both\n // low and high by one and carry bit #0 from high to #31 in low.\n // The next bit is then copied into bit #19 in high, the leftmost\n // bit of the double's significand.\n\n // Preserve x for later user, so work with f.\n f = x\n low = 0 | 0\n for (;;) {\n y = f / 2\n f = floor(y)\n if (f === 0)\n // We just found the most signigicant (1-)bit, which\n // is the implicit bit and so, not stored in the double\n // value. So, it's time to leave the loop.\n break\n\n // Count this bit, shift low and carry bit #0 from high.\n bits++\n low >>>= 1\n low |= (high & 0x1) << 31\n // Shift high.\n high >>>= 1\n if (y !== f)\n // Copy the new bit into bit #19 in high (only required if 1).\n high |= 0x80000\n }\n }\n\n // Bias the exponent.\n exp = bits + BIAS\n\n // If the integer part is zero, we've not yet seen the implicit\n // leading bit. Variable skip is later used while processing the\n // fractional part (if any).\n skip = (x === 0)\n\n // Get fraction only into x.\n x = value - x\n\n // If some significand bits are still left to be filled and\n // the fractional part is not zero, convert the fraction using\n // the multiply-by-2 algorithm.\n if (bits < 52 && x !== 0) {\n // Initialize 'buffer' f, into which newly created bits get\n // shifted from right to left.\n f = 0\n\n for (;;) {\n y = x * 2\n if (y >= 1) {\n // This is a new 1-bit. Add and count this bit, if not\n // prohibited by skip.\n x = y - 1\n if (!skip) {\n f <<= 1\n f |= 1\n bits++\n } else {\n // Otherwise, decrement the exponent and unset\n // skip, so that all following bits get written.\n exp--\n skip = false\n }\n } else {\n // This is a new 0-bit. Add and count this bit, if not\n // prohibited by skip.\n x = y\n if (!skip) {\n f <<= 1\n bits++\n } else if (--exp === 0) {\n // Otherwise we've just decremented the exponent. If the\n // biased exponent is zero now (-1023), we process a\n // subnormal number, which has no impled leading 1-bit.\n // So, count this 0-bit and unset skip to write out\n // all the following bits.\n bits++\n skip = false\n }\n }\n if (bits === 20) {\n // When 20 bits have been created in total, we're done with\n // the high word. Copy the bits from 'buffer' f into high\n // and reset 'buffer' f. Following bits will end up in the\n // low word.\n high |= f\n f = 0\n } else if (bits === 52) {\n // When 52 bits have been created in total, we're done with\n // low word as well. Copy the bits from 'buffer' f into low\n // and exit the loop.\n low |= f\n break\n }\n if (y === 1) {\n // When y is exactly 1, there is no remainder and the process\n // is complete (the number is finite). Copy the bits from\n // 'buffer' f into either low or high and exit the loop.\n if (bits < 20)\n high |= (f << (20 - bits))\n else if (bits < 52) low |= (f << (52 - bits))\n\n break\n }\n }\n }\n\n // Copy/shift the exponent and sign bits into the high word.\n high |= (exp << 20)\n high |= sign\n\n return new Long(high, low)\n }\n Double.longBitsToDouble = function(bits) {\n let i\n let x, exp, fract\n const high = bits.high\n const low = bits.low\n\n // Extract the sign.\n const sign = (high & (1 << 31)) ? -1 : 1\n\n // Extract the unbiased exponent.\n exp = ((high & 0x7ff00000) >> 20) - BIAS\n\n // Calculate the fraction from left to right. Start\n // off with the 20 lower bits from the high word.\n fract = 0\n x = (1 << 19)\n for (i = 1; i <= 20; i++) {\n if (high & x) fract += pow(2, -i)\n\n x >>>= 1\n }\n // Continue with all 32 bits from the low word.\n x = (1 << 31)\n for (i = 21; i <= 52; i++) {\n if (low & x) fract += pow(2, -i)\n\n x >>>= 1\n }\n\n // Handle special values.\n // Check for zero and subnormal values.\n if (exp === -BIAS) {\n if (fract === 0)\n // +/-1.0 * 0.0 => +/-0.0\n return sign * 0\n\n exp = -1022\n } else if (exp === BIAS + 1) { // Check for +/-Infinity or NaN.\n if (fract === 0)\n // +/-1.0 / 0.0 => +/-Infinity\n return sign / 0\n\n return NaN\n } else { // Nothing special? Seems to be a normal number.\n // Add the implicit leading bit (1*2^0).\n fract += 1\n }\n\n return sign * fract * pow(2, exp)\n }\n })()\n","export default class Exception extends Error {\n constructor(message) {\n super(message)\n this.name = Object.keys({ Exception })[0]\n }\n toString() {\n return this.message\n }\n}\n","import Exception from './Exception.js'\n\nexport default class IllegalArgumentException extends Exception {\n constructor(message) {\n super(message)\n this.name = Object.keys({ IllegalArgumentException })[0]\n }\n}\n","import Exception from './Exception.js'\n\nexport default class IllegalStateException extends Exception {\n constructor(message) {\n super(message)\n this.name = Object.keys({ IllegalStateException })[0]\n }\n}\n","import Exception from './Exception.js'\n\nexport default class IndexOutOfBoundsException extends Exception {\n constructor(message) {\n super(message)\n this.name = Object.keys({ IndexOutOfBoundsException })[0]\n } \n}","export default class Integer {\n constructor(value) {\n this.value = value\n }\n\n intValue() {\n return this.value\n }\n\n compareTo(o) {\n if (this.value < o)\n return -1\n if (this.value > o)\n return 1\n return 0\n }\n\n static compare(x, y) {\n if (x < y)\n return -1\n if (x > y)\n return 1\n return 0\n }\n\n static isNan(n) {\n return Number.isNaN(n)\n }\n\n static valueOf(value) {\n return new Integer(value)\n }\n}\n","import Exception from './Exception.js'\n\nexport default class RuntimeException extends Exception {\n constructor(message) {\n super(message)\n this.name = Object.keys({ RuntimeException })[0]\n }\n}\n","export default class StringBuffer {\n constructor(str) {\n this.str = str\n }\n append(e) {\n this.str += e\n }\n setCharAt(i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n }\n toString() {\n return this.str\n }\n}","export default class StringBuilder {\n constructor(str) {\n this.str = str\n }\n append(e) {\n this.str += e\n }\n setCharAt(i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n }\n toString() {\n return this.str\n }\n}","export default class System {\n static arraycopy(src, srcPos, dest, destPos, len) {\n let c = 0\n for (let i = srcPos; i < srcPos + len; i++) {\n dest[destPos + c] = src[i]\n c++\n }\n }\n\n static getProperty(name) {\n return {\n 'line.separator': '\\n'\n }[name]\n }\n}\n","import Exception from './Exception.js'\n\nexport default class UnsupportedOperationException extends Exception {\n constructor(message) {\n super(message)\n this.name = Object.keys({ UnsupportedOperationException })[0]\n }\n}\n","import Collection from './Collection.js'\nimport IndexOutOfBoundsException from '../lang/IndexOutOfBoundsException.js'\nimport List from './List.js'\nimport NoSuchElementException from './NoSuchElementException.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html\n */\nexport default class ArrayList extends List {\n\n constructor(o) {\n super()\n this.array = []\n if (o instanceof Collection) this.addAll(o)\n }\n\n get interfaces_() {\n return [List, Collection]\n }\n\n ensureCapacity() { }\n\n add(e) {\n if (arguments.length === 1)\n this.array.push(e)\n else\n this.array.splice(arguments[0], 0, arguments[1])\n return true\n }\n\n clear() {\n this.array = []\n }\n\n addAll(c) {\n for (const e of c)\n this.array.push(e)\n }\n\n set(index, element) {\n const oldElement = this.array[index]\n this.array[index] = element\n return oldElement\n }\n\n iterator() {\n return new Iterator(this)\n }\n\n get(index) {\n if (index < 0 || index >= this.size())\n throw new IndexOutOfBoundsException()\n return this.array[index]\n }\n\n isEmpty() {\n return this.array.length === 0\n }\n\n sort(comparator) {\n if (comparator)\n this.array.sort((a, b) => comparator.compare(a, b))\n else this.array.sort()\n }\n\n size() {\n return this.array.length\n }\n\n toArray() {\n return this.array.slice()\n }\n\n remove(o) {\n for (let i = 0, len = this.array.length; i < len; i++)\n if (this.array[i] === o)\n return !!this.array.splice(i, 1)\n return false\n }\n\n [Symbol.iterator]() {\n return this.array.values()\n }\n}\n\nclass Iterator {\n constructor(arrayList) {\n this.arrayList = arrayList\n this.position = 0\n }\n\n next() {\n if (this.position === this.arrayList.size())\n throw new NoSuchElementException()\n return this.arrayList.get(this.position++)\n }\n\n hasNext() {\n return this.position < this.arrayList.size()\n }\n\n set(element) {\n return this.arrayList.set(this.position - 1, element)\n }\n\n remove() {\n this.arrayList.remove(this.arrayList.get(this.position))\n }\n}\n","import ArrayList from './ArrayList.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html\n */\nexport default class Arrays {\n static sort() {\n const a = arguments[0]\n if (arguments.length === 1) {\n a.sort((a, b) => a.compareTo(b))\n } else if (arguments.length === 2) {\n a.sort((a, b) => arguments[1].compare(a, b))\n } else if (arguments.length === 3) {\n const t = a.slice(arguments[1], arguments[2])\n t.sort()\n const r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length))\n a.splice(0, a.length)\n for (const e of r)\n a.push(e)\n } else if (arguments.length === 4) {\n const t = a.slice(arguments[1], arguments[2])\n t.sort((a, b) => arguments[3].compare(a, b))\n const r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length))\n a.splice(0, a.length)\n for (const e of r)\n a.push(e)\n }\n }\n\n /**\n * @param {Array} array\n * @return {ArrayList}\n */\n static asList(array) {\n const arrayList = new ArrayList()\n for (const e of array)\n arrayList.add(e)\n return arrayList\n }\n\n static copyOf(original, newLength) {\n return original.slice(0, newLength)\n }\n}\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Collection.html\n */\nexport default class Collection {\n /**\n * Ensures that this collection contains the specified element (optional\n * operation).\n * @param {Object} e\n * @return {boolean}\n */\n add() { }\n /**\n * Appends all of the elements in the specified collection to the end of this\n * list, in the order that they are returned by the specified collection's\n * iterator (optional operation).\n * @param {javascript.util.Collection} c\n * @return {boolean}\n */\n addAll() { }\n /**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\n isEmpty() { }\n /**\n * Returns an iterator over the elements in this collection.\n * @return {javascript.util.Iterator}\n */\n iterator() { }\n /**\n * Returns an iterator over the elements in this collection.\n * @return {number}\n */\n size() { }\n /**\n * Returns an array containing all of the elements in this collection.\n * @return {Array}\n */\n toArray() { }\n /**\n * Removes a single instance of the specified element from this collection if it\n * is present. (optional)\n * @param {Object} e\n * @return {boolean}\n */\n remove() { }\n}\n","export default function Comparator() {}\n","import Collection from './Collection.js'\nimport NoSuchElementException from './NoSuchElementException.js'\nimport UnsupportedOperationException from '../lang/UnsupportedOperationException.js'\nimport Set from './Set.js'\n\n/**\n * @see http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html\n */\nexport default class HashSet extends Set {\n constructor(o) {\n super()\n this.map = new Map()\n if (o instanceof Collection)\n this.addAll(o)\n }\n\n contains(o) {\n const hashCode = o.hashCode ? o.hashCode() : o\n if (this.map.has(hashCode))\n return true\n return false\n }\n\n add(o) {\n const hashCode = o.hashCode ? o.hashCode() : o\n if (this.map.has(hashCode))\n return false\n return !!this.map.set(hashCode, o)\n }\n\n addAll(c) {\n for (const e of c)\n this.add(e)\n return true\n }\n\n remove() {\n throw new UnsupportedOperationException()\n }\n\n size() {\n return this.map.size\n }\n\n isEmpty() {\n return this.map.size === 0\n }\n\n toArray() {\n return Array.from(this.map.values())\n }\n\n iterator() {\n return new Iterator(this.map)\n }\n\n [Symbol.iterator]() {\n return this.map\n }\n}\n\nclass Iterator {\n constructor(map) {\n this.iterator = map.values()\n const { done, value } = this.iterator.next()\n this.done = done\n this.value = value\n }\n\n next() {\n if (this.done)\n throw new NoSuchElementException()\n const current = this.value\n const { done, value } = this.iterator.next()\n this.done = done\n this.value = value\n return current\n }\n\n hasNext() {\n return !this.done\n }\n\n remove() {\n throw new UnsupportedOperationException()\n }\n}\n","import Collection from './Collection.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/List.html\n */\nexport default class List extends Collection {\n /**\n * Returns the element at the specified position in this list.\n * @param {number} index\n * @return {Object}\n */\n get() { }\n /**\n * Replaces the element at the specified position in this list with the\n * specified element (optional operation).\n * @param {number} index\n * @param {Object} e\n * @return {Object}\n */\n set() { }\n /**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\n isEmpty() { }\n}\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Map.html\n */\nexport default class Map {\n /**\n * Returns the value to which the specified key is mapped, or null if this map\n * contains no mapping for the key.\n * @param {Object} key\n * @return {Object}\n */\n get() { }\n\n /**\n * Associates the specified value with the specified key in this map (optional\n * operation).\n * @param {Object} key\n * @param {Object} value\n * @return {Object}\n */\n put() { }\n\n /**\n * Returns the number of key-value mappings in this map.\n * @return {number}\n */\n size() { }\n\n /**\n * Returns a Collection view of the values contained in this map.\n * @return {javascript.util.Collection}\n */\n values() { }\n\n /**\n * Returns a {@link Set} view of the mappings contained in this map.\n * The set is backed by the map, so changes to the map are\n * reflected in the set, and vice-versa. If the map is modified\n * while an iteration over the set is in progress (except through\n * the iterator's own remove operation, or through the\n * setValue operation on a map entry returned by the\n * iterator) the results of the iteration are undefined. The set\n * supports element removal, which removes the corresponding\n * mapping from the map, via the Iterator.remove,\n * Set.remove, removeAll, retainAll and\n * clear operations. It does not support the\n * add or addAll operations.\n *\n * @return {Set} a set view of the mappings contained in this map\n */\n entrySet() { }\n}\n","import Exception from '../lang/Exception.js'\n\nexport default class NoSuchElementException extends Exception {\n constructor(message) {\n super(message)\n this.name = Object.keys({ NoSuchElementException })[0]\n }\n}","import Collection from './Collection.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Set.html\n *\n * @extends {Collection}\n * @constructor\n * @private\n */\nexport default class Set extends Collection {\n /**\n * Returns true if this set contains the specified element. More formally,\n * returns true if and only if this set contains an element e such that (o==null ?\n * e==null : o.equals(e)).\n * @param {Object} e\n * @return {boolean}\n */\n contains() { }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport Double from '../../../../java/lang/Double.js'\nimport DD from '../math/DD.js'\nexport default class CGAlgorithmsDD {\n static orientationIndex(p1, p2, q) {\n const index = CGAlgorithmsDD.orientationIndexFilter(p1, p2, q)\n if (index <= 1) return index\n const dx1 = DD.valueOf(p2.x).selfAdd(-p1.x)\n const dy1 = DD.valueOf(p2.y).selfAdd(-p1.y)\n const dx2 = DD.valueOf(q.x).selfAdd(-p2.x)\n const dy2 = DD.valueOf(q.y).selfAdd(-p2.y)\n return dx1.selfMultiply(dy2).selfSubtract(dy1.selfMultiply(dx2)).signum()\n }\n static signOfDet2x2() {\n if (arguments[3] instanceof DD && (arguments[2] instanceof DD && (arguments[0] instanceof DD && arguments[1] instanceof DD))) {\n const x1 = arguments[0], y1 = arguments[1], x2 = arguments[2], y2 = arguments[3]\n const det = x1.multiply(y2).selfSubtract(y1.multiply(x2))\n return det.signum()\n } else if (typeof arguments[3] === 'number' && (typeof arguments[2] === 'number' && (typeof arguments[0] === 'number' && typeof arguments[1] === 'number'))) {\n const dx1 = arguments[0], dy1 = arguments[1], dx2 = arguments[2], dy2 = arguments[3]\n const x1 = DD.valueOf(dx1)\n const y1 = DD.valueOf(dy1)\n const x2 = DD.valueOf(dx2)\n const y2 = DD.valueOf(dy2)\n const det = x1.multiply(y2).selfSubtract(y1.multiply(x2))\n return det.signum()\n }\n }\n static intersection(p1, p2, q1, q2) {\n const px = new DD(p1.y).selfSubtract(p2.y)\n const py = new DD(p2.x).selfSubtract(p1.x)\n const pw = new DD(p1.x).selfMultiply(p2.y).selfSubtract(new DD(p2.x).selfMultiply(p1.y))\n const qx = new DD(q1.y).selfSubtract(q2.y)\n const qy = new DD(q2.x).selfSubtract(q1.x)\n const qw = new DD(q1.x).selfMultiply(q2.y).selfSubtract(new DD(q2.x).selfMultiply(q1.y))\n const x = py.multiply(qw).selfSubtract(qy.multiply(pw))\n const y = qx.multiply(pw).selfSubtract(px.multiply(qw))\n const w = px.multiply(qy).selfSubtract(qx.multiply(py))\n const xInt = x.selfDivide(w).doubleValue()\n const yInt = y.selfDivide(w).doubleValue()\n if (Double.isNaN(xInt) || (Double.isInfinite(xInt) || Double.isNaN(yInt)) || Double.isInfinite(yInt)) \n return null\n \n return new Coordinate(xInt, yInt)\n }\n static orientationIndexFilter(pa, pb, pc) {\n let detsum = null\n const detleft = (pa.x - pc.x) * (pb.y - pc.y)\n const detright = (pa.y - pc.y) * (pb.x - pc.x)\n const det = detleft - detright\n if (detleft > 0.0) \n if (detright <= 0.0) \n return CGAlgorithmsDD.signum(det)\n else \n detsum = detleft + detright\n \n else if (detleft < 0.0) \n if (detright >= 0.0) \n return CGAlgorithmsDD.signum(det)\n else \n detsum = -detleft - detright\n \n else \n return CGAlgorithmsDD.signum(det)\n \n const errbound = CGAlgorithmsDD.DP_SAFE_EPSILON * detsum\n if (det >= errbound || -det >= errbound) \n return CGAlgorithmsDD.signum(det)\n \n return 2\n }\n static signum(x) {\n if (x > 0) return 1\n if (x < 0) return -1\n return 0\n }\n}\nCGAlgorithmsDD.DP_SAFE_EPSILON = 1e-15\n","import hasInterface from '../../../../hasInterface.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport CGAlgorithmsDD from './CGAlgorithmsDD.js'\nimport CoordinateSequence from '../geom/CoordinateSequence.js'\nexport default class Orientation {\n static isCCW() {\n if (arguments[0] instanceof Array) {\n const ring = arguments[0]\n const nPts = ring.length - 1\n if (nPts < 3) throw new IllegalArgumentException('Ring has fewer than 4 points, so orientation cannot be determined')\n let hiPt = ring[0]\n let hiIndex = 0\n for (let i = 1; i <= nPts; i++) {\n const p = ring[i]\n if (p.y > hiPt.y) {\n hiPt = p\n hiIndex = i\n }\n }\n let iPrev = hiIndex\n do {\n iPrev = iPrev - 1\n if (iPrev < 0) iPrev = nPts\n } while (ring[iPrev].equals2D(hiPt) && iPrev !== hiIndex)\n let iNext = hiIndex\n do \n iNext = (iNext + 1) % nPts\n while (ring[iNext].equals2D(hiPt) && iNext !== hiIndex)\n const prev = ring[iPrev]\n const next = ring[iNext]\n if (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next)) return false\n const disc = Orientation.index(prev, hiPt, next)\n let isCCW = null\n if (disc === 0) \n isCCW = prev.x > next.x\n else \n isCCW = disc > 0\n \n return isCCW\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const ring = arguments[0]\n const nPts = ring.size() - 1\n if (nPts < 3) throw new IllegalArgumentException('Ring has fewer than 4 points, so orientation cannot be determined')\n let hiPt = ring.getCoordinate(0)\n let hiIndex = 0\n for (let i = 1; i <= nPts; i++) {\n const p = ring.getCoordinate(i)\n if (p.y > hiPt.y) {\n hiPt = p\n hiIndex = i\n }\n }\n let prev = null\n let iPrev = hiIndex\n do {\n iPrev = iPrev - 1\n if (iPrev < 0) iPrev = nPts\n prev = ring.getCoordinate(iPrev)\n } while (prev.equals2D(hiPt) && iPrev !== hiIndex)\n let next = null\n let iNext = hiIndex\n do {\n iNext = (iNext + 1) % nPts\n next = ring.getCoordinate(iNext)\n } while (next.equals2D(hiPt) && iNext !== hiIndex)\n if (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next)) return false\n const disc = Orientation.index(prev, hiPt, next)\n let isCCW = null\n if (disc === 0) \n isCCW = prev.x > next.x\n else \n isCCW = disc > 0\n \n return isCCW\n }\n }\n static index(p1, p2, q) {\n return CGAlgorithmsDD.orientationIndex(p1, p2, q)\n }\n}\nOrientation.CLOCKWISE = -1\nOrientation.RIGHT = Orientation.CLOCKWISE\nOrientation.COUNTERCLOCKWISE = 1\nOrientation.LEFT = Orientation.COUNTERCLOCKWISE\nOrientation.COLLINEAR = 0\nOrientation.STRAIGHT = Orientation.COLLINEAR\n","export default class NumberUtil {\n static equalsWithTolerance(x1, x2, tolerance) {\n return Math.abs(x1 - x2) <= tolerance\n }\n}\n","import NumberUtil from '../util/NumberUtil.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport Double from '../../../../java/lang/Double.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport Serializable from '../../../../java/io/Serializable.js'\nimport Assert from '../util/Assert.js'\nimport Cloneable from '../../../../java/lang/Cloneable.js'\nimport Comparator from '../../../../java/util/Comparator.js'\n\nconst kBuf = new ArrayBuffer(8)\nconst kBufAsF64 = new Float64Array(kBuf)\nconst kBufAsI32 = new Int32Array(kBuf)\n\nexport default class Coordinate {\n constructor() {\n Coordinate.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.x = null\n this.y = null\n this.z = null\n if (arguments.length === 0) {\n Coordinate.constructor_.call(this, 0.0, 0.0)\n } else if (arguments.length === 1) {\n const c = arguments[0]\n Coordinate.constructor_.call(this, c.x, c.y, c.getZ())\n } else if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n Coordinate.constructor_.call(this, x, y, Coordinate.NULL_ORDINATE)\n } else if (arguments.length === 3) {\n const x = arguments[0], y = arguments[1], z = arguments[2]\n this.x = x\n this.y = y\n this.z = z\n }\n }\n static hashCode(n) {\n kBufAsF64[0] = n\n return kBufAsI32[0] ^ kBufAsI32[1]\n }\n equals2D() {\n if (arguments.length === 1) {\n const other = arguments[0]\n if (this.x !== other.x) \n return false\n \n if (this.y !== other.y) \n return false\n \n return true\n } else if (arguments.length === 2) {\n const c = arguments[0], tolerance = arguments[1]\n if (!NumberUtil.equalsWithTolerance(this.x, c.x, tolerance)) \n return false\n \n if (!NumberUtil.equalsWithTolerance(this.y, c.y, tolerance)) \n return false\n \n return true\n }\n }\n setM(m) {\n throw new IllegalArgumentException('Invalid ordinate index: ' + Coordinate.M)\n }\n equals3D(other) {\n return this.x === other.x && this.y === other.y && (this.getZ() === other.getZ() || Double.isNaN(this.getZ()) && Double.isNaN(other.getZ()))\n }\n setX(x) {\n this.x = x\n }\n compareTo(o) {\n const other = o\n if (this.x < other.x) return -1\n if (this.x > other.x) return 1\n if (this.y < other.y) return -1\n if (this.y > other.y) return 1\n return 0\n }\n getX() {\n return this.x\n }\n copy() {\n return new Coordinate(this)\n }\n toString() {\n return '(' + this.x + ', ' + this.y + ', ' + this.getZ() + ')'\n }\n distance3D(c) {\n const dx = this.x - c.x\n const dy = this.y - c.y\n const dz = this.getZ() - c.getZ()\n return Math.sqrt(dx * dx + dy * dy + dz * dz)\n }\n getY() {\n return this.y\n }\n getM() {\n return Double.NaN\n }\n setOrdinate(ordinateIndex, value) {\n switch (ordinateIndex) {\n case Coordinate.X:\n this.x = value\n break\n case Coordinate.Y:\n this.y = value\n break\n case Coordinate.Z:\n this.setZ(value)\n break\n default:\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n }\n getZ() {\n return this.z\n }\n getOrdinate(ordinateIndex) {\n switch (ordinateIndex) {\n case Coordinate.X:\n return this.x\n case Coordinate.Y:\n return this.y\n case Coordinate.Z:\n return this.getZ()\n }\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n equals(other) {\n if (!(other instanceof Coordinate)) \n return false\n \n return this.equals2D(other)\n }\n equalInZ(c, tolerance) {\n return NumberUtil.equalsWithTolerance(this.getZ(), c.getZ(), tolerance)\n }\n setZ(z) {\n this.z = z\n }\n clone() {\n try {\n const coord = null\n return coord\n } catch (e) {\n if (e instanceof CloneNotSupportedException) {\n Assert.shouldNeverReachHere('this shouldn\\'t happen because this class is Cloneable')\n return null\n } else {\n throw e\n }\n } finally {}\n }\n setY(y) {\n this.y = y\n }\n distance(c) {\n const dx = this.x - c.x\n const dy = this.y - c.y\n return Math.sqrt(dx * dx + dy * dy)\n }\n hashCode() {\n let result = 17\n result = 37 * result + Coordinate.hashCode(this.x)\n result = 37 * result + Coordinate.hashCode(this.y)\n return result\n }\n setCoordinate(other) {\n this.x = other.x\n this.y = other.y\n this.z = other.getZ()\n }\n get interfaces_() {\n return [Comparable, Cloneable, Serializable]\n }\n}\nclass DimensionalComparator {\n constructor() {\n DimensionalComparator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._dimensionsToTest = 2\n if (arguments.length === 0) {\n DimensionalComparator.constructor_.call(this, 2)\n } else if (arguments.length === 1) {\n const dimensionsToTest = arguments[0]\n if (dimensionsToTest !== 2 && dimensionsToTest !== 3) throw new IllegalArgumentException('only 2 or 3 dimensions may be specified')\n this._dimensionsToTest = dimensionsToTest\n }\n }\n static compare(a, b) {\n if (a < b) return -1\n if (a > b) return 1\n if (Double.isNaN(a)) {\n if (Double.isNaN(b)) return 0\n return -1\n }\n if (Double.isNaN(b)) return 1\n return 0\n }\n compare(c1, c2) {\n const compX = DimensionalComparator.compare(c1.x, c2.x)\n if (compX !== 0) return compX\n const compY = DimensionalComparator.compare(c1.y, c2.y)\n if (compY !== 0) return compY\n if (this._dimensionsToTest <= 2) return 0\n const compZ = DimensionalComparator.compare(c1.getZ(), c2.getZ())\n return compZ\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nCoordinate.DimensionalComparator = DimensionalComparator\nCoordinate.NULL_ORDINATE = Double.NaN\nCoordinate.X = 0\nCoordinate.Y = 1\nCoordinate.Z = 2\nCoordinate.M = 3\n","import CoordinateList from './CoordinateList.js'\nimport Coordinates from './Coordinates.js'\nimport MathUtil from '../math/MathUtil.js'\nimport System from '../../../../java/lang/System.js'\nimport Comparator from '../../../../java/util/Comparator.js'\nimport Envelope from './Envelope.js'\nexport default class CoordinateArrays {\n static scroll(coordinates, firstCoordinate) {\n const i = CoordinateArrays.indexOf(firstCoordinate, coordinates)\n if (i < 0) return null\n const newCoordinates = new Array(coordinates.length).fill(null)\n System.arraycopy(coordinates, i, newCoordinates, 0, coordinates.length - i)\n System.arraycopy(coordinates, 0, newCoordinates, coordinates.length - i, i)\n System.arraycopy(newCoordinates, 0, coordinates, 0, coordinates.length)\n }\n static removeRepeatedPoints(coord) {\n if (!CoordinateArrays.hasRepeatedPoints(coord)) return coord\n const coordList = new CoordinateList(coord, false)\n return coordList.toCoordinateArray()\n }\n static reverse(coord) {\n const last = coord.length - 1\n const mid = Math.trunc(last / 2)\n for (let i = 0; i <= mid; i++) {\n const tmp = coord[i]\n coord[i] = coord[last - i]\n coord[last - i] = tmp\n }\n }\n static removeNull(coord) {\n let nonNull = 0\n for (let i = 0; i < coord.length; i++) \n if (coord[i] !== null) nonNull++\n \n const newCoord = new Array(nonNull).fill(null)\n if (nonNull === 0) return newCoord\n let j = 0\n for (let i = 0; i < coord.length; i++) \n if (coord[i] !== null) newCoord[j++] = coord[i]\n \n return newCoord\n }\n static copyDeep() {\n if (arguments.length === 1) {\n const coordinates = arguments[0]\n const copy = new Array(coordinates.length).fill(null)\n for (let i = 0; i < coordinates.length; i++) \n copy[i] = coordinates[i].copy()\n \n return copy\n } else if (arguments.length === 5) {\n const src = arguments[0], srcStart = arguments[1], dest = arguments[2], destStart = arguments[3], length = arguments[4]\n for (let i = 0; i < length; i++) \n dest[destStart + i] = src[srcStart + i].copy()\n \n }\n }\n static isEqualReversed(pts1, pts2) {\n for (let i = 0; i < pts1.length; i++) {\n const p1 = pts1[i]\n const p2 = pts2[pts1.length - i - 1]\n if (p1.compareTo(p2) !== 0) return false\n }\n return true\n }\n static envelope(coordinates) {\n const env = new Envelope()\n for (let i = 0; i < coordinates.length; i++) \n env.expandToInclude(coordinates[i])\n \n return env\n }\n static extract(pts, start, end) {\n start = MathUtil.clamp(start, 0, pts.length)\n end = MathUtil.clamp(end, -1, pts.length)\n let npts = end - start + 1\n if (end < 0) npts = 0\n if (start >= pts.length) npts = 0\n if (end < start) npts = 0\n const extractPts = new Array(npts).fill(null)\n if (npts === 0) return extractPts\n let iPts = 0\n for (let i = start; i <= end; i++) \n extractPts[iPts++] = pts[i]\n \n return extractPts\n }\n static isRing(pts) {\n if (pts.length < 4) return false\n if (!pts[0].equals2D(pts[pts.length - 1])) return false\n return true\n }\n static ptNotInList(testPts, pts) {\n for (let i = 0; i < testPts.length; i++) {\n const testPt = testPts[i]\n if (CoordinateArrays.indexOf(testPt, pts) < 0) return testPt\n }\n return null\n }\n static equals() {\n if (arguments.length === 2) {\n const coord1 = arguments[0], coord2 = arguments[1]\n if (coord1 === coord2) return true\n if (coord1 === null || coord2 === null) return false\n if (coord1.length !== coord2.length) return false\n for (let i = 0; i < coord1.length; i++) \n if (!coord1[i].equals(coord2[i])) return false\n \n return true\n } else if (arguments.length === 3) {\n const coord1 = arguments[0], coord2 = arguments[1], coordinateComparator = arguments[2]\n if (coord1 === coord2) return true\n if (coord1 === null || coord2 === null) return false\n if (coord1.length !== coord2.length) return false\n for (let i = 0; i < coord1.length; i++) \n if (coordinateComparator.compare(coord1[i], coord2[i]) !== 0) return false\n \n return true\n }\n }\n static intersection(coordinates, env) {\n const coordList = new CoordinateList()\n for (let i = 0; i < coordinates.length; i++) \n if (env.intersects(coordinates[i])) coordList.add(coordinates[i], true)\n \n return coordList.toCoordinateArray()\n }\n static measures(pts) {\n if (pts === null || pts.length === 0) \n return 0\n \n let measures = 0\n for (const coordinate of pts) \n measures = Math.max(measures, Coordinates.measures(coordinate))\n \n return measures\n }\n static hasRepeatedPoints(coord) {\n for (let i = 1; i < coord.length; i++) \n if (coord[i - 1].equals(coord[i])) \n return true\n \n \n return false\n }\n static toCoordinateArray(coordList) {\n return coordList.toArray(CoordinateArrays.coordArrayType)\n }\n static dimension(pts) {\n if (pts === null || pts.length === 0) \n return 3\n \n let dimension = 0\n for (const coordinate of pts) \n dimension = Math.max(dimension, Coordinates.dimension(coordinate))\n \n return dimension\n }\n static atLeastNCoordinatesOrNothing(n, c) {\n return c.length >= n ? c : []\n }\n static indexOf(coordinate, coordinates) {\n for (let i = 0; i < coordinates.length; i++) \n if (coordinate.equals(coordinates[i])) \n return i\n \n \n return -1\n }\n static increasingDirection(pts) {\n for (let i = 0; i < Math.trunc(pts.length / 2); i++) {\n const j = pts.length - 1 - i\n const comp = pts[i].compareTo(pts[j])\n if (comp !== 0) return comp\n }\n return 1\n }\n static compare(pts1, pts2) {\n let i = 0\n while (i < pts1.length && i < pts2.length) {\n const compare = pts1[i].compareTo(pts2[i])\n if (compare !== 0) return compare\n i++\n }\n if (i < pts2.length) return -1\n if (i < pts1.length) return 1\n return 0\n }\n static minCoordinate(coordinates) {\n let minCoord = null\n for (let i = 0; i < coordinates.length; i++) \n if (minCoord === null || minCoord.compareTo(coordinates[i]) > 0) \n minCoord = coordinates[i]\n \n \n return minCoord\n }\n}\nclass ForwardComparator {\n compare(o1, o2) {\n const pts1 = o1\n const pts2 = o2\n return CoordinateArrays.compare(pts1, pts2)\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nclass BidirectionalComparator {\n compare(o1, o2) {\n const pts1 = o1\n const pts2 = o2\n if (pts1.length < pts2.length) return -1\n if (pts1.length > pts2.length) return 1\n if (pts1.length === 0) return 0\n const forwardComp = CoordinateArrays.compare(pts1, pts2)\n const isEqualRev = CoordinateArrays.isEqualReversed(pts1, pts2)\n if (isEqualRev) return 0\n return forwardComp\n }\n OLDcompare(o1, o2) {\n const pts1 = o1\n const pts2 = o2\n if (pts1.length < pts2.length) return -1\n if (pts1.length > pts2.length) return 1\n if (pts1.length === 0) return 0\n const dir1 = CoordinateArrays.increasingDirection(pts1)\n const dir2 = CoordinateArrays.increasingDirection(pts2)\n let i1 = dir1 > 0 ? 0 : pts1.length - 1\n let i2 = dir2 > 0 ? 0 : pts1.length - 1\n for (let i = 0; i < pts1.length; i++) {\n const comparePt = pts1[i1].compareTo(pts2[i2])\n if (comparePt !== 0) return comparePt\n i1 += dir1\n i2 += dir2\n }\n return 0\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nCoordinateArrays.ForwardComparator = ForwardComparator\nCoordinateArrays.BidirectionalComparator = BidirectionalComparator\nCoordinateArrays.coordArrayType = new Array(0).fill(null)\n","export default class CoordinateFilter {\n filter(coord) {}\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport Collection from '../../../../java/util/Collection.js'\nimport Coordinate from './Coordinate.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nexport default class CoordinateList extends ArrayList {\n constructor() {\n super()\n CoordinateList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const coord = arguments[0]\n this.ensureCapacity(coord.length)\n this.add(coord, true)\n } else if (arguments.length === 2) {\n const coord = arguments[0], allowRepeated = arguments[1]\n this.ensureCapacity(coord.length)\n this.add(coord, allowRepeated)\n }\n }\n getCoordinate(i) {\n return this.get(i)\n }\n addAll() {\n if (arguments.length === 2 && (typeof arguments[1] === 'boolean' && hasInterface(arguments[0], Collection))) {\n const coll = arguments[0], allowRepeated = arguments[1]\n let isChanged = false\n for (let i = coll.iterator(); i.hasNext(); ) {\n this.add(i.next(), allowRepeated)\n isChanged = true\n }\n return isChanged\n } else {\n return super.addAll.apply(this, arguments)\n }\n }\n clone() {\n const clone = super.clone.call(this)\n for (let i = 0; i < this.size(); i++) \n clone.add(i, this.get(i).clone())\n \n return clone\n }\n closeRing() {\n if (this.size() > 0) {\n const duplicate = this.get(0).copy()\n this.add(duplicate, false)\n }\n }\n toCoordinateArray() {\n if (arguments.length === 0) {\n return this.toArray(CoordinateList.coordArrayType)\n } else if (arguments.length === 1) {\n const isForward = arguments[0]\n if (isForward) \n return this.toArray(CoordinateList.coordArrayType)\n \n const size = this.size()\n const pts = new Array(size).fill(null)\n for (let i = 0; i < size; i++) \n pts[i] = this.get(size - i - 1)\n \n return pts\n }\n }\n add() {\n if (arguments.length === 1) {\n const coord = arguments[0]\n return super.add.call(this, coord)\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Array && typeof arguments[1] === 'boolean') {\n const coord = arguments[0], allowRepeated = arguments[1]\n this.add(coord, allowRepeated, true)\n return true\n } else if (arguments[0] instanceof Coordinate && typeof arguments[1] === 'boolean') {\n const coord = arguments[0], allowRepeated = arguments[1]\n if (!allowRepeated) \n if (this.size() >= 1) {\n const last = this.get(this.size() - 1)\n if (last.equals2D(coord)) return null\n }\n \n super.add.call(this, coord)\n } else if (arguments[0] instanceof Object && typeof arguments[1] === 'boolean') {\n const obj = arguments[0], allowRepeated = arguments[1]\n this.add(obj, allowRepeated)\n return true\n }\n } else if (arguments.length === 3) {\n if (typeof arguments[2] === 'boolean' && (arguments[0] instanceof Array && typeof arguments[1] === 'boolean')) {\n const coord = arguments[0], allowRepeated = arguments[1], direction = arguments[2]\n if (direction) \n for (let i = 0; i < coord.length; i++) \n this.add(coord[i], allowRepeated)\n \n else \n for (let i = coord.length - 1; i >= 0; i--) \n this.add(coord[i], allowRepeated)\n \n \n return true\n } else if (typeof arguments[2] === 'boolean' && (Number.isInteger(arguments[0]) && arguments[1] instanceof Coordinate)) {\n const i = arguments[0], coord = arguments[1], allowRepeated = arguments[2]\n if (!allowRepeated) {\n const size = this.size()\n if (size > 0) {\n if (i > 0) {\n const prev = this.get(i - 1)\n if (prev.equals2D(coord)) return null\n }\n if (i < size) {\n const next = this.get(i)\n if (next.equals2D(coord)) return null\n }\n }\n }\n super.add.call(this, i, coord)\n }\n } else if (arguments.length === 4) {\n const coord = arguments[0], allowRepeated = arguments[1], start = arguments[2], end = arguments[3]\n let inc = 1\n if (start > end) inc = -1\n for (let i = start; i !== end; i += inc) \n this.add(coord[i], allowRepeated)\n \n return true\n }\n }\n}\nCoordinateList.coordArrayType = new Array(0).fill(null)\n","import Double from '../../../../java/lang/Double.js'\nimport Cloneable from '../../../../java/lang/Cloneable.js'\nexport default class CoordinateSequence {\n getCoordinate() {\n if (arguments.length === 1) {\n const i = arguments[0]\n } else if (arguments.length === 2) {\n const index = arguments[0], coord = arguments[1]\n }\n }\n getCoordinateCopy(i) {}\n createCoordinate() {}\n getDimension() {}\n hasM() {\n return this.getMeasures() > 0\n }\n getX(index) {}\n hasZ() {\n return this.getDimension() - this.getMeasures() > 2\n }\n getMeasures() {\n return 0\n }\n expandEnvelope(env) {}\n copy() {}\n getY(index) {}\n toCoordinateArray() {}\n getM(index) {\n if (this.hasM()) {\n const mIndex = this.getDimension() - this.getMeasures()\n return this.getOrdinate(index, mIndex)\n } else {\n return Double.NaN\n }\n }\n setOrdinate(index, ordinateIndex, value) {}\n getZ(index) {\n if (this.hasZ()) \n return this.getOrdinate(index, 2)\n else \n return Double.NaN\n \n }\n size() {}\n getOrdinate(index, ordinateIndex) {}\n get interfaces_() {\n return [Cloneable]\n }\n}\nCoordinateSequence.X = 0\nCoordinateSequence.Y = 1\nCoordinateSequence.Z = 2\nCoordinateSequence.M = 3\n","export default class CoordinateSequenceFilter {\n filter(seq, i) {}\n isGeometryChanged() {}\n isDone() {}\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport Coordinate from './Coordinate.js'\nimport Double from '../../../../java/lang/Double.js'\nimport CoordinateSequence from './CoordinateSequence.js'\nexport default class CoordinateSequences {\n static scroll() {\n if (arguments.length === 2) {\n if (hasInterface(arguments[0], CoordinateSequence) && Number.isInteger(arguments[1])) {\n const seq = arguments[0], indexOfFirstCoordinate = arguments[1]\n CoordinateSequences.scroll(seq, indexOfFirstCoordinate, CoordinateSequences.isRing(seq))\n } else if (hasInterface(arguments[0], CoordinateSequence) && arguments[1] instanceof Coordinate) {\n const seq = arguments[0], firstCoordinate = arguments[1]\n const i = CoordinateSequences.indexOf(firstCoordinate, seq)\n if (i <= 0) return null\n CoordinateSequences.scroll(seq, i)\n }\n } else if (arguments.length === 3) {\n const seq = arguments[0], indexOfFirstCoordinate = arguments[1], ensureRing = arguments[2]\n const i = indexOfFirstCoordinate\n if (i <= 0) return null\n const copy = seq.copy()\n const last = ensureRing ? seq.size() - 1 : seq.size()\n for (let j = 0; j < last; j++) \n for (let k = 0; k < seq.getDimension(); k++) seq.setOrdinate(j, k, copy.getOrdinate((indexOfFirstCoordinate + j) % last, k))\n \n if (ensureRing) \n for (let k = 0; k < seq.getDimension(); k++) seq.setOrdinate(last, k, seq.getOrdinate(0, k))\n \n }\n }\n static isEqual(cs1, cs2) {\n const cs1Size = cs1.size()\n const cs2Size = cs2.size()\n if (cs1Size !== cs2Size) return false\n const dim = Math.min(cs1.getDimension(), cs2.getDimension())\n for (let i = 0; i < cs1Size; i++) \n for (let d = 0; d < dim; d++) {\n const v1 = cs1.getOrdinate(i, d)\n const v2 = cs2.getOrdinate(i, d)\n if (cs1.getOrdinate(i, d) === cs2.getOrdinate(i, d)) continue\n if (Double.isNaN(v1) && Double.isNaN(v2)) continue\n return false\n }\n \n return true\n }\n static minCoordinateIndex() {\n if (arguments.length === 1) {\n const seq = arguments[0]\n return CoordinateSequences.minCoordinateIndex(seq, 0, seq.size() - 1)\n } else if (arguments.length === 3) {\n const seq = arguments[0], from = arguments[1], to = arguments[2]\n let minCoordIndex = -1\n let minCoord = null\n for (let i = from; i <= to; i++) {\n const testCoord = seq.getCoordinate(i)\n if (minCoord === null || minCoord.compareTo(testCoord) > 0) {\n minCoord = testCoord\n minCoordIndex = i\n }\n }\n return minCoordIndex\n }\n }\n static extend(fact, seq, size) {\n const newseq = fact.create(size, seq.getDimension())\n const n = seq.size()\n CoordinateSequences.copy(seq, 0, newseq, 0, n)\n if (n > 0) \n for (let i = n; i < size; i++) CoordinateSequences.copy(seq, n - 1, newseq, i, 1)\n \n return newseq\n }\n static reverse(seq) {\n const last = seq.size() - 1\n const mid = Math.trunc(last / 2)\n for (let i = 0; i <= mid; i++) \n CoordinateSequences.swap(seq, i, last - i)\n \n }\n static ensureValidRing(fact, seq) {\n const n = seq.size()\n if (n === 0) return seq\n if (n <= 3) return CoordinateSequences.createClosedRing(fact, seq, 4)\n const isClosed = seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y)\n if (isClosed) return seq\n return CoordinateSequences.createClosedRing(fact, seq, n + 1)\n }\n static minCoordinate(seq) {\n let minCoord = null\n for (let i = 0; i < seq.size(); i++) {\n const testCoord = seq.getCoordinate(i)\n if (minCoord === null || minCoord.compareTo(testCoord) > 0) \n minCoord = testCoord\n \n }\n return minCoord\n }\n static copyCoord(src, srcPos, dest, destPos) {\n const minDim = Math.min(src.getDimension(), dest.getDimension())\n for (let dim = 0; dim < minDim; dim++) \n dest.setOrdinate(destPos, dim, src.getOrdinate(srcPos, dim))\n \n }\n static isRing(seq) {\n const n = seq.size()\n if (n === 0) return true\n if (n <= 3) return false\n return seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y)\n }\n static swap(seq, i, j) {\n if (i === j) return null\n for (let dim = 0; dim < seq.getDimension(); dim++) {\n const tmp = seq.getOrdinate(i, dim)\n seq.setOrdinate(i, dim, seq.getOrdinate(j, dim))\n seq.setOrdinate(j, dim, tmp)\n }\n }\n static copy(src, srcPos, dest, destPos, length) {\n for (let i = 0; i < length; i++) \n CoordinateSequences.copyCoord(src, srcPos + i, dest, destPos + i)\n \n }\n static indexOf(coordinate, seq) {\n for (let i = 0; i < seq.size(); i++) \n if (coordinate.x === seq.getOrdinate(i, CoordinateSequence.X) && coordinate.y === seq.getOrdinate(i, CoordinateSequence.Y)) \n return i\n \n \n return -1\n }\n static createClosedRing(fact, seq, size) {\n const newseq = fact.create(size, seq.getDimension())\n const n = seq.size()\n CoordinateSequences.copy(seq, 0, newseq, 0, n)\n for (let i = n; i < size; i++) CoordinateSequences.copy(seq, 0, newseq, i, 1)\n return newseq\n }\n}\n","import Coordinate from './Coordinate.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nexport default class CoordinateXY extends Coordinate {\n constructor() {\n super()\n CoordinateXY.constructor_.apply(this, arguments)\n }\n static constructor_() {\n if (arguments.length === 0) {\n Coordinate.constructor_.call(this)\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof CoordinateXY) {\n const coord = arguments[0]\n Coordinate.constructor_.call(this, coord.x, coord.y)\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n Coordinate.constructor_.call(this, coord.x, coord.y)\n }\n } else if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n Coordinate.constructor_.call(this, x, y, Coordinate.NULL_ORDINATE)\n }\n }\n setOrdinate(ordinateIndex, value) {\n switch (ordinateIndex) {\n case CoordinateXY.X:\n this.x = value\n break\n case CoordinateXY.Y:\n this.y = value\n break\n default:\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n }\n setZ(z) {\n throw new IllegalArgumentException('CoordinateXY dimension 2 does not support z-ordinate')\n }\n copy() {\n return new CoordinateXY(this)\n }\n toString() {\n return '(' + this.x + ', ' + this.y + ')'\n }\n setCoordinate(other) {\n this.x = other.x\n this.y = other.y\n this.z = other.getZ()\n }\n getZ() {\n return Coordinate.NULL_ORDINATE\n }\n getOrdinate(ordinateIndex) {\n switch (ordinateIndex) {\n case CoordinateXY.X:\n return this.x\n case CoordinateXY.Y:\n return this.y\n }\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n}\nCoordinateXY.X = 0\nCoordinateXY.Y = 1\nCoordinateXY.Z = -1\nCoordinateXY.M = -1\n","import Coordinate from './Coordinate.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nexport default class CoordinateXYM extends Coordinate {\n constructor() {\n super()\n CoordinateXYM.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._m = null\n if (arguments.length === 0) {\n Coordinate.constructor_.call(this)\n this._m = 0.0\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof CoordinateXYM) {\n const coord = arguments[0]\n Coordinate.constructor_.call(this, coord.x, coord.y)\n this._m = coord._m\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n Coordinate.constructor_.call(this, coord.x, coord.y)\n this._m = this.getM()\n }\n } else if (arguments.length === 3) {\n const x = arguments[0], y = arguments[1], m = arguments[2]\n Coordinate.constructor_.call(this, x, y, Coordinate.NULL_ORDINATE)\n this._m = m\n }\n }\n setM(m) {\n this._m = m\n }\n setZ(z) {\n throw new IllegalArgumentException('CoordinateXY dimension 2 does not support z-ordinate')\n }\n copy() {\n return new CoordinateXYM(this)\n }\n toString() {\n return '(' + this.x + ', ' + this.y + ' m=' + this.getM() + ')'\n }\n setCoordinate(other) {\n this.x = other.x\n this.y = other.y\n this.z = other.getZ()\n this._m = other.getM()\n }\n getM() {\n return this._m\n }\n setOrdinate(ordinateIndex, value) {\n switch (ordinateIndex) {\n case CoordinateXYM.X:\n this.x = value\n break\n case CoordinateXYM.Y:\n this.y = value\n break\n case CoordinateXYM.M:\n this._m = value\n break\n default:\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n }\n getZ() {\n return Coordinate.NULL_ORDINATE\n }\n getOrdinate(ordinateIndex) {\n switch (ordinateIndex) {\n case CoordinateXYM.X:\n return this.x\n case CoordinateXYM.Y:\n return this.y\n case CoordinateXYM.M:\n return this._m\n }\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n}\nCoordinateXYM.X = 0\nCoordinateXYM.Y = 1\nCoordinateXYM.Z = -1\nCoordinateXYM.M = 2\n","import Coordinate from './Coordinate.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nexport default class CoordinateXYZM extends Coordinate {\n constructor() {\n super()\n CoordinateXYZM.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._m = null\n if (arguments.length === 0) {\n Coordinate.constructor_.call(this)\n this._m = 0.0\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof CoordinateXYZM) {\n const coord = arguments[0]\n Coordinate.constructor_.call(this, coord)\n this._m = coord._m\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n Coordinate.constructor_.call(this, coord)\n this._m = this.getM()\n }\n } else if (arguments.length === 4) {\n const x = arguments[0], y = arguments[1], z = arguments[2], m = arguments[3]\n Coordinate.constructor_.call(this, x, y, z)\n this._m = m\n }\n }\n setM(m) {\n this._m = m\n }\n getOrdinate(ordinateIndex) {\n switch (ordinateIndex) {\n case Coordinate.X:\n return this.x\n case Coordinate.Y:\n return this.y\n case Coordinate.Z:\n return this.getZ()\n case Coordinate.M:\n return this.getM()\n }\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n copy() {\n return new CoordinateXYZM(this)\n }\n toString() {\n return '(' + this.x + ', ' + this.y + ', ' + this.getZ() + ' m=' + this.getM() + ')'\n }\n setCoordinate(other) {\n this.x = other.x\n this.y = other.y\n this.z = other.getZ()\n this._m = other.getM()\n }\n getM() {\n return this._m\n }\n setOrdinate(ordinateIndex, value) {\n switch (ordinateIndex) {\n case Coordinate.X:\n this.x = value\n break\n case Coordinate.Y:\n this.y = value\n break\n case Coordinate.Z:\n this.z = value\n break\n case Coordinate.M:\n this._m = value\n break\n default:\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n }\n}\n","import CoordinateXY from './CoordinateXY.js'\nimport Coordinate from './Coordinate.js'\nimport CoordinateXYM from './CoordinateXYM.js'\nimport CoordinateXYZM from './CoordinateXYZM.js'\nexport default class Coordinates {\n static measures(coordinate) {\n if (coordinate instanceof CoordinateXY) \n return 0\n else if (coordinate instanceof CoordinateXYM) \n return 1\n else if (coordinate instanceof CoordinateXYZM) \n return 1\n else if (coordinate instanceof Coordinate) \n return 0\n \n return 0\n }\n static create() {\n if (arguments.length === 1) {\n const dimension = arguments[0]\n return Coordinates.create(dimension, 0)\n } else if (arguments.length === 2) {\n const dimension = arguments[0], measures = arguments[1]\n if (dimension === 2) \n return new CoordinateXY()\n else if (dimension === 3 && measures === 0) \n return new Coordinate()\n else if (dimension === 3 && measures === 1) \n return new CoordinateXYM()\n else if (dimension === 4 && measures === 1) \n return new CoordinateXYZM()\n \n return new Coordinate()\n }\n }\n static dimension(coordinate) {\n if (coordinate instanceof CoordinateXY) \n return 2\n else if (coordinate instanceof CoordinateXYM) \n return 3\n else if (coordinate instanceof CoordinateXYZM) \n return 4\n else if (coordinate instanceof Coordinate) \n return 3\n \n return 3\n }\n}\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport Character from '../../../../java/lang/Character.js'\nexport default class Dimension {\n static toDimensionSymbol(dimensionValue) {\n switch (dimensionValue) {\n case Dimension.FALSE:\n return Dimension.SYM_FALSE\n case Dimension.TRUE:\n return Dimension.SYM_TRUE\n case Dimension.DONTCARE:\n return Dimension.SYM_DONTCARE\n case Dimension.P:\n return Dimension.SYM_P\n case Dimension.L:\n return Dimension.SYM_L\n case Dimension.A:\n return Dimension.SYM_A\n }\n throw new IllegalArgumentException('Unknown dimension value: ' + dimensionValue)\n }\n static toDimensionValue(dimensionSymbol) {\n switch (Character.toUpperCase(dimensionSymbol)) {\n case Dimension.SYM_FALSE:\n return Dimension.FALSE\n case Dimension.SYM_TRUE:\n return Dimension.TRUE\n case Dimension.SYM_DONTCARE:\n return Dimension.DONTCARE\n case Dimension.SYM_P:\n return Dimension.P\n case Dimension.SYM_L:\n return Dimension.L\n case Dimension.SYM_A:\n return Dimension.A\n }\n throw new IllegalArgumentException('Unknown dimension symbol: ' + dimensionSymbol)\n }\n}\nDimension.P = 0\nDimension.L = 1\nDimension.A = 2\nDimension.FALSE = -1\nDimension.TRUE = -2\nDimension.DONTCARE = -3\nDimension.SYM_FALSE = 'F'\nDimension.SYM_TRUE = 'T'\nDimension.SYM_DONTCARE = '*'\nDimension.SYM_P = '0'\nDimension.SYM_L = '1'\nDimension.SYM_A = '2'\n","import Coordinate from './Coordinate.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport Serializable from '../../../../java/io/Serializable.js'\nexport default class Envelope {\n constructor() {\n Envelope.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._minx = null\n this._maxx = null\n this._miny = null\n this._maxy = null\n if (arguments.length === 0) {\n this.init()\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.init(p.x, p.x, p.y, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const env = arguments[0]\n this.init(env)\n }\n } else if (arguments.length === 2) {\n const p1 = arguments[0], p2 = arguments[1]\n this.init(p1.x, p2.x, p1.y, p2.y)\n } else if (arguments.length === 4) {\n const x1 = arguments[0], x2 = arguments[1], y1 = arguments[2], y2 = arguments[3]\n this.init(x1, x2, y1, y2)\n }\n }\n static intersects() {\n if (arguments.length === 3) {\n const p1 = arguments[0], p2 = arguments[1], q = arguments[2]\n if (q.x >= (p1.x < p2.x ? p1.x : p2.x) && q.x <= (p1.x > p2.x ? p1.x : p2.x) && (q.y >= (p1.y < p2.y ? p1.y : p2.y) && q.y <= (p1.y > p2.y ? p1.y : p2.y))) \n return true\n \n return false\n } else if (arguments.length === 4) {\n const p1 = arguments[0], p2 = arguments[1], q1 = arguments[2], q2 = arguments[3]\n let minq = Math.min(q1.x, q2.x)\n let maxq = Math.max(q1.x, q2.x)\n let minp = Math.min(p1.x, p2.x)\n let maxp = Math.max(p1.x, p2.x)\n if (minp > maxq) return false\n if (maxp < minq) return false\n minq = Math.min(q1.y, q2.y)\n maxq = Math.max(q1.y, q2.y)\n minp = Math.min(p1.y, p2.y)\n maxp = Math.max(p1.y, p2.y)\n if (minp > maxq) return false\n if (maxp < minq) return false\n return true\n }\n }\n getArea() {\n return this.getWidth() * this.getHeight()\n }\n getMinX() {\n return this._minx\n }\n expandToInclude() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.expandToInclude(p.x, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n if (other.isNull()) \n return null\n \n if (this.isNull()) {\n this._minx = other.getMinX()\n this._maxx = other.getMaxX()\n this._miny = other.getMinY()\n this._maxy = other.getMaxY()\n } else {\n if (other._minx < this._minx) \n this._minx = other._minx\n \n if (other._maxx > this._maxx) \n this._maxx = other._maxx\n \n if (other._miny < this._miny) \n this._miny = other._miny\n \n if (other._maxy > this._maxy) \n this._maxy = other._maxy\n \n }\n }\n } else if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n if (this.isNull()) {\n this._minx = x\n this._maxx = x\n this._miny = y\n this._maxy = y\n } else {\n if (x < this._minx) \n this._minx = x\n \n if (x > this._maxx) \n this._maxx = x\n \n if (y < this._miny) \n this._miny = y\n \n if (y > this._maxy) \n this._maxy = y\n \n }\n }\n }\n compareTo(o) {\n const env = o\n if (this.isNull()) {\n if (env.isNull()) return 0\n return -1\n } else {\n if (env.isNull()) return 1\n }\n if (this._minx < env._minx) return -1\n if (this._minx > env._minx) return 1\n if (this._miny < env._miny) return -1\n if (this._miny > env._miny) return 1\n if (this._maxx < env._maxx) return -1\n if (this._maxx > env._maxx) return 1\n if (this._maxy < env._maxy) return -1\n if (this._maxy > env._maxy) return 1\n return 0\n }\n translate(transX, transY) {\n if (this.isNull()) \n return null\n \n this.init(this.getMinX() + transX, this.getMaxX() + transX, this.getMinY() + transY, this.getMaxY() + transY)\n }\n copy() {\n return new Envelope(this)\n }\n expandBy() {\n if (arguments.length === 1) {\n const distance = arguments[0]\n this.expandBy(distance, distance)\n } else if (arguments.length === 2) {\n const deltaX = arguments[0], deltaY = arguments[1]\n if (this.isNull()) return null\n this._minx -= deltaX\n this._maxx += deltaX\n this._miny -= deltaY\n this._maxy += deltaY\n if (this._minx > this._maxx || this._miny > this._maxy) this.setToNull()\n }\n }\n contains() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n return this.covers(other)\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this.covers(p)\n }\n } else if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n return this.covers(x, y)\n }\n }\n hashCode() {\n let result = 17\n result = 37 * result + Coordinate.hashCode(this._minx)\n result = 37 * result + Coordinate.hashCode(this._maxx)\n result = 37 * result + Coordinate.hashCode(this._miny)\n result = 37 * result + Coordinate.hashCode(this._maxy)\n return result\n }\n equals(other) {\n if (!(other instanceof Envelope)) \n return false\n \n const otherEnvelope = other\n if (this.isNull()) \n return otherEnvelope.isNull()\n \n return this._maxx === otherEnvelope.getMaxX() && this._maxy === otherEnvelope.getMaxY() && this._minx === otherEnvelope.getMinX() && this._miny === otherEnvelope.getMinY()\n }\n intersection(env) {\n if (this.isNull() || env.isNull() || !this.intersects(env)) return new Envelope()\n const intMinX = this._minx > env._minx ? this._minx : env._minx\n const intMinY = this._miny > env._miny ? this._miny : env._miny\n const intMaxX = this._maxx < env._maxx ? this._maxx : env._maxx\n const intMaxY = this._maxy < env._maxy ? this._maxy : env._maxy\n return new Envelope(intMinX, intMaxX, intMinY, intMaxY)\n }\n isNull() {\n return this._maxx < this._minx\n }\n getMaxX() {\n return this._maxx\n }\n covers() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this.covers(p.x, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n if (this.isNull() || other.isNull()) \n return false\n \n return other.getMinX() >= this._minx && other.getMaxX() <= this._maxx && other.getMinY() >= this._miny && other.getMaxY() <= this._maxy\n }\n } else if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n if (this.isNull()) return false\n return x >= this._minx && x <= this._maxx && y >= this._miny && y <= this._maxy\n }\n }\n intersects() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n if (this.isNull() || other.isNull()) \n return false\n \n return !(other._minx > this._maxx || other._maxx < this._minx || other._miny > this._maxy || other._maxy < this._miny)\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this.intersects(p.x, p.y)\n }\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const a = arguments[0], b = arguments[1]\n if (this.isNull()) \n return false\n \n const envminx = a.x < b.x ? a.x : b.x\n if (envminx > this._maxx) return false\n const envmaxx = a.x > b.x ? a.x : b.x\n if (envmaxx < this._minx) return false\n const envminy = a.y < b.y ? a.y : b.y\n if (envminy > this._maxy) return false\n const envmaxy = a.y > b.y ? a.y : b.y\n if (envmaxy < this._miny) return false\n return true\n } else if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const x = arguments[0], y = arguments[1]\n if (this.isNull()) return false\n return !(x > this._maxx || x < this._minx || y > this._maxy || y < this._miny)\n }\n }\n }\n getMinY() {\n return this._miny\n }\n getDiameter() {\n if (this.isNull()) \n return 0\n \n const w = this.getWidth()\n const h = this.getHeight()\n return Math.sqrt(w * w + h * h)\n }\n minExtent() {\n if (this.isNull()) return 0.0\n const w = this.getWidth()\n const h = this.getHeight()\n if (w < h) return w\n return h\n }\n getWidth() {\n if (this.isNull()) \n return 0\n \n return this._maxx - this._minx\n }\n toString() {\n return 'Env[' + this._minx + ' : ' + this._maxx + ', ' + this._miny + ' : ' + this._maxy + ']'\n }\n setToNull() {\n this._minx = 0\n this._maxx = -1\n this._miny = 0\n this._maxy = -1\n }\n disjoint(other) {\n if (this.isNull() || other.isNull()) \n return true\n \n return other._minx > this._maxx || other._maxx < this._minx || other._miny > this._maxy || other._maxy < this._miny\n }\n getHeight() {\n if (this.isNull()) \n return 0\n \n return this._maxy - this._miny\n }\n maxExtent() {\n if (this.isNull()) return 0.0\n const w = this.getWidth()\n const h = this.getHeight()\n if (w > h) return w\n return h\n }\n centre() {\n if (this.isNull()) return null\n return new Coordinate((this.getMinX() + this.getMaxX()) / 2.0, (this.getMinY() + this.getMaxY()) / 2.0)\n }\n init() {\n if (arguments.length === 0) {\n this.setToNull()\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.init(p.x, p.x, p.y, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const env = arguments[0]\n this._minx = env._minx\n this._maxx = env._maxx\n this._miny = env._miny\n this._maxy = env._maxy\n }\n } else if (arguments.length === 2) {\n const p1 = arguments[0], p2 = arguments[1]\n this.init(p1.x, p2.x, p1.y, p2.y)\n } else if (arguments.length === 4) {\n const x1 = arguments[0], x2 = arguments[1], y1 = arguments[2], y2 = arguments[3]\n if (x1 < x2) {\n this._minx = x1\n this._maxx = x2\n } else {\n this._minx = x2\n this._maxx = x1\n }\n if (y1 < y2) {\n this._miny = y1\n this._maxy = y2\n } else {\n this._miny = y2\n this._maxy = y1\n }\n }\n }\n getMaxY() {\n return this._maxy\n }\n distance(env) {\n if (this.intersects(env)) return 0\n let dx = 0.0\n if (this._maxx < env._minx) dx = env._minx - this._maxx; else if (this._minx > env._maxx) dx = this._minx - env._maxx\n let dy = 0.0\n if (this._maxy < env._miny) dy = env._miny - this._maxy; else if (this._miny > env._maxy) dy = this._miny - env._maxy\n if (dx === 0.0) return dy\n if (dy === 0.0) return dx\n return Math.sqrt(dx * dx + dy * dy)\n }\n get interfaces_() {\n return [Comparable, Serializable]\n }\n}\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport GeometryComponentFilter from './GeometryComponentFilter.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport Cloneable from '../../../../java/lang/Cloneable.js'\nimport Serializable from '../../../../java/io/Serializable.js'\nimport Envelope from './Envelope.js'\nexport default class Geometry {\n constructor() {\n Geometry.constructor_.apply(this, arguments)\n }\n\n isGeometryCollection() {\n return this.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION\n }\n\n getFactory() {\n return this._factory\n }\n\n getGeometryN(n) {\n return this\n }\n\n getArea() {\n return 0.0\n }\n\n isRectangle() {\n return false\n }\n\n equalsExact(other) {\n return this === other || this.equalsExact(other, 0)\n }\n\n geometryChanged() {\n this.apply(Geometry.geometryChangedFilter)\n }\n\n geometryChangedAction() {\n this._envelope = null\n }\n\n equalsNorm(g) {\n if (g === null) return false\n return this.norm().equalsExact(g.norm())\n }\n\n getLength() {\n return 0.0\n }\n\n getNumGeometries() {\n return 1\n }\n\n compareTo() {\n let other\n if (arguments.length === 1) {\n const o = arguments[0]\n other = o\n if (this.getTypeCode() !== other.getTypeCode()) return this.getTypeCode() - other.getTypeCode()\n\n if (this.isEmpty() && other.isEmpty()) return 0\n\n if (this.isEmpty()) return -1\n\n if (other.isEmpty()) return 1\n\n return this.compareToSameClass(o)\n } else if (arguments.length === 2) {\n const o = arguments[0]; const comp = arguments[1]\n other = o\n if (this.getTypeCode() !== other.getTypeCode()) return this.getTypeCode() - other.getTypeCode()\n\n if (this.isEmpty() && other.isEmpty()) return 0\n\n if (this.isEmpty()) return -1\n\n if (other.isEmpty()) return 1\n\n return this.compareToSameClass(o, comp)\n }\n }\n\n getUserData() {\n return this._userData\n }\n\n getSRID() {\n return this._SRID\n }\n\n getEnvelope() {\n return this.getFactory().toGeometry(this.getEnvelopeInternal())\n }\n\n static checkNotGeometryCollection(g) {\n if (g.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION) throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n }\n\n equal(a, b, tolerance) {\n if (tolerance === 0) return a.equals(b)\n\n return a.distance(b) <= tolerance\n }\n\n norm() {\n const copy = this.copy()\n copy.normalize()\n return copy\n }\n\n reverse() {\n const res = this.reverseInternal()\n if (this.envelope != null) res.envelope = this.envelope.copy()\n\n res.setSRID(this.getSRID())\n return res\n }\n\n copy() {\n const copy = this.copyInternal()\n copy.envelope = this._envelope == null ? null : this._envelope.copy()\n copy._SRID = this._SRID\n copy._userData = this._userData\n return copy\n }\n\n getPrecisionModel() {\n return this._factory.getPrecisionModel()\n }\n\n getEnvelopeInternal() {\n if (this._envelope === null) this._envelope = this.computeEnvelopeInternal()\n\n return new Envelope(this._envelope)\n }\n\n setSRID(SRID) {\n this._SRID = SRID\n }\n\n setUserData(userData) {\n this._userData = userData\n }\n\n compare(a, b) {\n const i = a.iterator()\n const j = b.iterator()\n while (i.hasNext() && j.hasNext()) {\n const aElement = i.next()\n const bElement = j.next()\n const comparison = aElement.compareTo(bElement)\n if (comparison !== 0) return comparison\n }\n if (i.hasNext()) return 1\n\n if (j.hasNext()) return -1\n\n return 0\n }\n\n hashCode() {\n return this.getEnvelopeInternal().hashCode()\n }\n\n isEquivalentClass(other) {\n return this.getTypeCode() == other.getTypeCode()\n }\n\n get interfaces_() {\n return [Cloneable, Comparable, Serializable]\n }\n\n getClass() {\n return Geometry\n }\n\n static hasNonEmptyElements(geometries) {\n for (let i = 0; i < geometries.length; i++)\n if (!geometries[i].isEmpty()) return true\n\n return false\n }\n\n static hasNullElements(array) {\n for (let i = 0; i < array.length; i++)\n if (array[i] === null) return true\n\n return false\n }\n}\nGeometry.constructor_ = function(factory) {\n if (!factory) return\n this._envelope = null\n this._userData = null\n this._factory = factory\n this._SRID = factory.getSRID()\n}\nGeometry.TYPECODE_POINT = 0\nGeometry.TYPECODE_MULTIPOINT = 1\nGeometry.TYPECODE_LINESTRING = 2\nGeometry.TYPECODE_LINEARRING = 3\nGeometry.TYPECODE_MULTILINESTRING = 4\nGeometry.TYPECODE_POLYGON = 5\nGeometry.TYPECODE_MULTIPOLYGON = 6\nGeometry.TYPECODE_GEOMETRYCOLLECTION = 7\nGeometry.TYPENAME_POINT = 'Point'\nGeometry.TYPENAME_MULTIPOINT = 'MultiPoint'\nGeometry.TYPENAME_LINESTRING = 'LineString'\nGeometry.TYPENAME_LINEARRING = 'LinearRing'\nGeometry.TYPENAME_MULTILINESTRING = 'MultiLineString'\nGeometry.TYPENAME_POLYGON = 'Polygon'\nGeometry.TYPENAME_MULTIPOLYGON = 'MultiPolygon'\nGeometry.TYPENAME_GEOMETRYCOLLECTION = 'GeometryCollection'\nGeometry.geometryChangedFilter = {\n get interfaces_() {\n return [GeometryComponentFilter]\n },\n filter(geom) {\n geom.geometryChangedAction()\n }\n}\n","import Set from './Set.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html\n */\nexport default class SortedSet extends Set {}\n","import Collection from './Collection.js'\nimport NoSuchElementException from './NoSuchElementException.js'\nimport UnsupportedOperationException from '../lang/UnsupportedOperationException.js'\nimport SortedSet from './SortedSet.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html\n */\nexport default class TreeSet extends SortedSet {\n constructor(o) {\n super()\n this.array = []\n if (o instanceof Collection)\n this.addAll(o)\n }\n\n contains(o) {\n for (const e of this.array)\n if (e.compareTo(o) === 0)\n return true\n return false\n }\n\n add(o) {\n if (this.contains(o))\n return false\n for (let i = 0, len = this.array.length; i < len; i++) {\n const e = this.array[i]\n if (e.compareTo(o) === 1)\n return !!this.array.splice(i, 0, o)\n }\n this.array.push(o)\n return true\n }\n\n addAll(c) {\n for (const e of c)\n this.add(e)\n return true\n }\n\n remove() {\n throw new UnsupportedOperationException()\n }\n\n size() {\n return this.array.length\n }\n\n isEmpty() {\n return this.array.length === 0\n }\n\n toArray() {\n return this.array.slice()\n }\n\n iterator() {\n return new Iterator(this.array)\n }\n}\n\nclass Iterator {\n constructor(array) {\n this.array = array\n this.position = 0\n }\n\n next() {\n if (this.position === this.array.length)\n throw new NoSuchElementException()\n return this.array[this.position++]\n }\n\n hasNext() {\n return this.position < this.array.length\n }\n\n remove() {\n throw new UnsupportedOperationException()\n }\n}\n","import TreeSet from '../../../../java/util/TreeSet.js'\nimport hasInterface from '../../../../hasInterface.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport GeometryComponentFilter from './GeometryComponentFilter.js'\nimport Dimension from './Dimension.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Geometry from './Geometry.js'\nimport Arrays from '../../../../java/util/Arrays.js'\nimport CoordinateFilter from './CoordinateFilter.js'\nimport GeometryFilter from './GeometryFilter.js'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter.js'\nimport Envelope from './Envelope.js'\nimport Assert from '../util/Assert.js'\nexport default class GeometryCollection extends Geometry {\n constructor() {\n super()\n GeometryCollection.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geometries = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n let geometries = arguments[0], factory = arguments[1]\n Geometry.constructor_.call(this, factory)\n if (geometries === null) \n geometries = []\n \n if (Geometry.hasNullElements(geometries)) \n throw new IllegalArgumentException('geometries must not contain null elements')\n \n this._geometries = geometries\n }\n }\n computeEnvelopeInternal() {\n const envelope = new Envelope()\n for (let i = 0; i < this._geometries.length; i++) \n envelope.expandToInclude(this._geometries[i].getEnvelopeInternal())\n \n return envelope\n }\n getGeometryN(n) {\n return this._geometries[n]\n }\n getCoordinates() {\n const coordinates = new Array(this.getNumPoints()).fill(null)\n let k = -1\n for (let i = 0; i < this._geometries.length; i++) {\n const childCoordinates = this._geometries[i].getCoordinates()\n for (let j = 0; j < childCoordinates.length; j++) {\n k++\n coordinates[k] = childCoordinates[j]\n }\n }\n return coordinates\n }\n getArea() {\n let area = 0.0\n for (let i = 0; i < this._geometries.length; i++) \n area += this._geometries[i].getArea()\n \n return area\n }\n copyInternal() {\n const geometries = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < geometries.length; i++) \n geometries[i] = this._geometries[i].copy()\n \n return new GeometryCollection(geometries, this._factory)\n }\n equalsExact() {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0], tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) \n return false\n \n const otherCollection = other\n if (this._geometries.length !== otherCollection._geometries.length) \n return false\n \n for (let i = 0; i < this._geometries.length; i++) \n if (!this._geometries[i].equalsExact(otherCollection._geometries[i], tolerance)) \n return false\n \n \n return true\n } else {\n return super.equalsExact.apply(this, arguments)\n }\n }\n reverseInternal() {\n const numGeometries = this._geometries.length\n const reversed = new ArrayList(numGeometries)\n for (let i = 0; i < numGeometries; i++) \n reversed.add(this._geometries[i].reverse())\n \n return this.getFactory().buildGeometry(reversed)\n }\n getTypeCode() {\n return Geometry.TYPECODE_GEOMETRYCOLLECTION\n }\n getDimension() {\n let dimension = Dimension.FALSE\n for (let i = 0; i < this._geometries.length; i++) \n dimension = Math.max(dimension, this._geometries[i].getDimension())\n \n return dimension\n }\n getNumGeometries() {\n return this._geometries.length\n }\n getBoundary() {\n Geometry.checkNotGeometryCollection(this)\n Assert.shouldNeverReachHere()\n return null\n }\n getGeometryType() {\n return Geometry.TYPENAME_GEOMETRYCOLLECTION\n }\n isEmpty() {\n for (let i = 0; i < this._geometries.length; i++) \n if (!this._geometries[i].isEmpty()) \n return false\n \n \n return true\n }\n normalize() {\n for (let i = 0; i < this._geometries.length; i++) \n this._geometries[i].normalize()\n \n Arrays.sort(this._geometries)\n }\n getCoordinate() {\n if (this.isEmpty()) return null\n return this._geometries[0].getCoordinate()\n }\n getBoundaryDimension() {\n let dimension = Dimension.FALSE\n for (let i = 0; i < this._geometries.length; i++) \n dimension = Math.max(dimension, this._geometries[i].getBoundaryDimension())\n \n return dimension\n }\n getLength() {\n let sum = 0.0\n for (let i = 0; i < this._geometries.length; i++) \n sum += this._geometries[i].getLength()\n \n return sum\n }\n getNumPoints() {\n let numPoints = 0\n for (let i = 0; i < this._geometries.length; i++) \n numPoints += this._geometries[i].getNumPoints()\n \n return numPoints\n }\n compareToSameClass() {\n if (arguments.length === 1) {\n const o = arguments[0]\n const theseElements = new TreeSet(Arrays.asList(this._geometries))\n const otherElements = new TreeSet(Arrays.asList(o._geometries))\n return this.compare(theseElements, otherElements)\n } else if (arguments.length === 2) {\n const o = arguments[0], comp = arguments[1]\n const gc = o\n const n1 = this.getNumGeometries()\n const n2 = gc.getNumGeometries()\n let i = 0\n while (i < n1 && i < n2) {\n const thisGeom = this.getGeometryN(i)\n const otherGeom = gc.getGeometryN(i)\n const holeComp = thisGeom.compareToSameClass(otherGeom, comp)\n if (holeComp !== 0) return holeComp\n i++\n }\n if (i < n1) return 1\n if (i < n2) return -1\n return 0\n }\n }\n apply() {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n for (let i = 0; i < this._geometries.length; i++) \n this._geometries[i].apply(filter)\n \n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n if (this._geometries.length === 0) return null\n for (let i = 0; i < this._geometries.length; i++) {\n this._geometries[i].apply(filter)\n if (filter.isDone()) \n break\n \n }\n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n for (let i = 0; i < this._geometries.length; i++) \n this._geometries[i].apply(filter)\n \n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n for (let i = 0; i < this._geometries.length; i++) \n this._geometries[i].apply(filter)\n \n }\n }\n}\n","export default class GeometryComponentFilter {\n filter(geom) {}\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport CoordinateSequence from './CoordinateSequence.js'\nexport default class CoordinateSequenceFactory {\n create() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordSeq = arguments[0]\n }\n } else if (arguments.length === 2) {\n const size = arguments[0], dimension = arguments[1]\n } else if (arguments.length === 3) {\n const size = arguments[0], dimension = arguments[1], measures = arguments[2]\n return this.create(size, dimension)\n }\n }\n}\n","import CoordinateSequenceFactory from '../CoordinateSequenceFactory.js'\nimport CoordinateSequence from '../CoordinateSequence.js'\nimport Serializable from '../../../../../java/io/Serializable.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport CoordinateArraySequence from './CoordinateArraySequence.js'\nexport default class CoordinateArraySequenceFactory {\n static instance() {\n return CoordinateArraySequenceFactory.instanceObject\n }\n readResolve() {\n return CoordinateArraySequenceFactory.instance()\n }\n create() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n return new CoordinateArraySequence(coordinates)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordSeq = arguments[0]\n return new CoordinateArraySequence(coordSeq)\n }\n } else if (arguments.length === 2) {\n let size = arguments[0], dimension = arguments[1]\n if (dimension > 3) dimension = 3\n if (dimension < 2) dimension = 2\n return new CoordinateArraySequence(size, dimension)\n } else if (arguments.length === 3) {\n let size = arguments[0], dimension = arguments[1], measures = arguments[2]\n let spatial = dimension - measures\n if (measures > 1) \n measures = 1\n \n if (spatial > 3) \n spatial = 3\n \n if (spatial < 2) spatial = 2\n return new CoordinateArraySequence(size, spatial + measures, measures)\n }\n }\n get interfaces_() {\n return [CoordinateSequenceFactory, Serializable]\n }\n}\nCoordinateArraySequenceFactory.instanceObject = new CoordinateArraySequenceFactory()\n","import hasInterface from '../../../../hasInterface.js'\nimport LinearRing from './LinearRing.js'\nimport CoordinateArraySequenceFactory from './impl/CoordinateArraySequenceFactory.js'\nimport MultiPolygon from './MultiPolygon.js'\nimport CoordinateSequences from './CoordinateSequences.js'\nimport PrecisionModel from './PrecisionModel.js'\nimport Serializable from '../../../../java/io/Serializable.js'\nimport Assert from '../util/Assert.js'\nimport MultiLineString from './MultiLineString.js'\nimport CoordinateSequenceFactory from './CoordinateSequenceFactory.js'\nimport LineString from './LineString.js'\nimport Coordinate from './Coordinate.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport Point from './Point.js'\nimport Polygon from './Polygon.js'\nimport MultiPoint from './MultiPoint.js'\nimport CoordinateSequence from './CoordinateSequence.js'\nimport GeometryCollection from './GeometryCollection.js'\nexport default class GeometryFactory {\n constructor() {\n GeometryFactory.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._precisionModel = null\n this._coordinateSequenceFactory = null\n this._SRID = null\n if (arguments.length === 0) {\n GeometryFactory.constructor_.call(this, new PrecisionModel(), 0)\n } else if (arguments.length === 1) {\n if (hasInterface(arguments[0], CoordinateSequenceFactory)) {\n const coordinateSequenceFactory = arguments[0]\n GeometryFactory.constructor_.call(this, new PrecisionModel(), 0, coordinateSequenceFactory)\n } else if (arguments[0] instanceof PrecisionModel) {\n const precisionModel = arguments[0]\n GeometryFactory.constructor_.call(this, precisionModel, 0, GeometryFactory.getDefaultCoordinateSequenceFactory())\n }\n } else if (arguments.length === 2) {\n const precisionModel = arguments[0], SRID = arguments[1]\n GeometryFactory.constructor_.call(this, precisionModel, SRID, GeometryFactory.getDefaultCoordinateSequenceFactory())\n } else if (arguments.length === 3) {\n const precisionModel = arguments[0], SRID = arguments[1], coordinateSequenceFactory = arguments[2]\n this._precisionModel = precisionModel\n this._coordinateSequenceFactory = coordinateSequenceFactory\n this._SRID = SRID\n }\n }\n static toMultiPolygonArray(multiPolygons) {\n const multiPolygonArray = new Array(multiPolygons.size()).fill(null)\n return multiPolygons.toArray(multiPolygonArray)\n }\n static toGeometryArray(geometries) {\n if (geometries === null) return null\n const geometryArray = new Array(geometries.size()).fill(null)\n return geometries.toArray(geometryArray)\n }\n static getDefaultCoordinateSequenceFactory() {\n return CoordinateArraySequenceFactory.instance()\n }\n static toMultiLineStringArray(multiLineStrings) {\n const multiLineStringArray = new Array(multiLineStrings.size()).fill(null)\n return multiLineStrings.toArray(multiLineStringArray)\n }\n static toLineStringArray(lineStrings) {\n const lineStringArray = new Array(lineStrings.size()).fill(null)\n return lineStrings.toArray(lineStringArray)\n }\n static toMultiPointArray(multiPoints) {\n const multiPointArray = new Array(multiPoints.size()).fill(null)\n return multiPoints.toArray(multiPointArray)\n }\n static toLinearRingArray(linearRings) {\n const linearRingArray = new Array(linearRings.size()).fill(null)\n return linearRings.toArray(linearRingArray)\n }\n static toPointArray(points) {\n const pointArray = new Array(points.size()).fill(null)\n return points.toArray(pointArray)\n }\n static toPolygonArray(polygons) {\n const polygonArray = new Array(polygons.size()).fill(null)\n return polygons.toArray(polygonArray)\n }\n static createPointFromInternalCoord(coord, exemplar) {\n exemplar.getPrecisionModel().makePrecise(coord)\n return exemplar.getFactory().createPoint(coord)\n }\n createEmpty(dimension) {\n switch (dimension) {\n case -1:\n return this.createGeometryCollection()\n case 0:\n return this.createPoint()\n case 1:\n return this.createLineString()\n case 2:\n return this.createPolygon()\n default:\n throw new IllegalArgumentException('Invalid dimension: ' + dimension)\n }\n }\n toGeometry(envelope) {\n if (envelope.isNull()) \n return this.createPoint()\n \n if (envelope.getMinX() === envelope.getMaxX() && envelope.getMinY() === envelope.getMaxY()) \n return this.createPoint(new Coordinate(envelope.getMinX(), envelope.getMinY()))\n \n if (envelope.getMinX() === envelope.getMaxX() || envelope.getMinY() === envelope.getMaxY()) \n return this.createLineString([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY())])\n \n return this.createPolygon(this.createLinearRing([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMinY())]), null)\n }\n createLineString() {\n if (arguments.length === 0) \n return this.createLineString(this.getCoordinateSequenceFactory().create([]))\n else if (arguments.length === 1) \n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n return this.createLineString(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n return new LineString(coordinates, this)\n }\n \n }\n createMultiLineString() {\n if (arguments.length === 0) {\n return new MultiLineString(null, this)\n } else if (arguments.length === 1) {\n const lineStrings = arguments[0]\n return new MultiLineString(lineStrings, this)\n }\n }\n createPolygon() {\n if (arguments.length === 0) {\n return this.createPolygon(null, null)\n } else if (arguments.length === 1) {\n if (hasInterface(arguments[0], CoordinateSequence)) {\n const shell = arguments[0]\n return this.createPolygon(this.createLinearRing(shell))\n } else if (arguments[0] instanceof Array) {\n const shell = arguments[0]\n return this.createPolygon(this.createLinearRing(shell))\n } else if (arguments[0] instanceof LinearRing) {\n const shell = arguments[0]\n return this.createPolygon(shell, null)\n }\n } else if (arguments.length === 2) {\n const shell = arguments[0], holes = arguments[1]\n return new Polygon(shell, holes, this)\n }\n }\n getSRID() {\n return this._SRID\n }\n createGeometryCollection() {\n if (arguments.length === 0) {\n return new GeometryCollection(null, this)\n } else if (arguments.length === 1) {\n const geometries = arguments[0]\n return new GeometryCollection(geometries, this)\n }\n }\n getPrecisionModel() {\n return this._precisionModel\n }\n createLinearRing() {\n if (arguments.length === 0) \n return this.createLinearRing(this.getCoordinateSequenceFactory().create([]))\n else if (arguments.length === 1) \n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n return this.createLinearRing(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n return new LinearRing(coordinates, this)\n }\n \n }\n createMultiPolygon() {\n if (arguments.length === 0) {\n return new MultiPolygon(null, this)\n } else if (arguments.length === 1) {\n const polygons = arguments[0]\n return new MultiPolygon(polygons, this)\n }\n }\n createMultiPoint() {\n if (arguments.length === 0) \n return new MultiPoint(null, this)\n else if (arguments.length === 1) \n if (arguments[0] instanceof Array) {\n const point = arguments[0]\n return new MultiPoint(point, this)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n if (coordinates === null) \n return this.createMultiPoint(new Array(0).fill(null))\n \n const points = new Array(coordinates.size()).fill(null)\n for (let i = 0; i < coordinates.size(); i++) {\n const ptSeq = this.getCoordinateSequenceFactory().create(1, coordinates.getDimension(), coordinates.getMeasures())\n CoordinateSequences.copy(coordinates, i, ptSeq, 0, 1)\n points[i] = this.createPoint(ptSeq)\n }\n return this.createMultiPoint(points)\n }\n \n }\n buildGeometry(geomList) {\n let geomType = null\n let isHeterogeneous = false\n let hasGeometryCollection = false\n for (let i = geomList.iterator(); i.hasNext(); ) {\n const geom = i.next()\n const partType = geom.getTypeCode()\n if (geomType === null) \n geomType = partType\n \n if (partType !== geomType) \n isHeterogeneous = true\n \n if (geom instanceof GeometryCollection) hasGeometryCollection = true\n }\n if (geomType === null) \n return this.createGeometryCollection()\n \n if (isHeterogeneous || hasGeometryCollection) \n return this.createGeometryCollection(GeometryFactory.toGeometryArray(geomList))\n \n const geom0 = geomList.iterator().next()\n const isCollection = geomList.size() > 1\n if (isCollection) {\n if (geom0 instanceof Polygon) \n return this.createMultiPolygon(GeometryFactory.toPolygonArray(geomList))\n else if (geom0 instanceof LineString) \n return this.createMultiLineString(GeometryFactory.toLineStringArray(geomList))\n else if (geom0 instanceof Point) \n return this.createMultiPoint(GeometryFactory.toPointArray(geomList))\n \n Assert.shouldNeverReachHere('Unhandled geometry type: ' + geom0.getGeometryType())\n }\n return geom0\n }\n createMultiPointFromCoords(coordinates) {\n return this.createMultiPoint(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n }\n createPoint() {\n if (arguments.length === 0) \n return this.createPoint(this.getCoordinateSequenceFactory().create([]))\n else if (arguments.length === 1) \n if (arguments[0] instanceof Coordinate) {\n const coordinate = arguments[0]\n return this.createPoint(coordinate !== null ? this.getCoordinateSequenceFactory().create([coordinate]) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n return new Point(coordinates, this)\n }\n \n }\n getCoordinateSequenceFactory() {\n return this._coordinateSequenceFactory\n }\n get interfaces_() {\n return [Serializable]\n }\n}\n","export default class GeometryFilter {\n filter(geom) {}\n}\n","import Coordinate from '../geom/Coordinate.js'\nexport default class Length {\n static ofLine(pts) {\n const n = pts.size()\n if (n <= 1) return 0.0\n let len = 0.0\n const p = new Coordinate()\n pts.getCoordinate(0, p)\n let x0 = p.x\n let y0 = p.y\n for (let i = 1; i < n; i++) {\n pts.getCoordinate(i, p)\n const x1 = p.x\n const y1 = p.y\n const dx = x1 - x0\n const dy = y1 - y0\n len += Math.sqrt(dx * dx + dy * dy)\n x0 = x1\n y0 = y1\n }\n return len\n }\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport Length from '../algorithm/Length.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport GeometryComponentFilter from './GeometryComponentFilter.js'\nimport UnsupportedOperationException from '../../../../java/lang/UnsupportedOperationException.js'\nimport CoordinateArrays from './CoordinateArrays.js'\nimport Dimension from './Dimension.js'\nimport Envelope from './Envelope.js'\nimport Geometry from './Geometry.js'\nimport CoordinateFilter from './CoordinateFilter.js'\nimport Lineal from './Lineal.js'\nimport CoordinateSequences from './CoordinateSequences.js'\nimport GeometryFilter from './GeometryFilter.js'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter.js'\nexport default class LineString extends Geometry {\n constructor() {\n super()\n LineString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._points = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const points = arguments[0], factory = arguments[1]\n Geometry.constructor_.call(this, factory)\n this.init(points)\n }\n }\n computeEnvelopeInternal() {\n if (this.isEmpty()) \n return new Envelope()\n \n return this._points.expandEnvelope(new Envelope())\n }\n isRing() {\n return this.isClosed() && CoordinateArrays.isRing(this.getCoordinates())\n }\n getCoordinates() {\n return this._points.toCoordinateArray()\n }\n copyInternal() {\n return new LineString(this._points.copy(), this._factory)\n }\n equalsExact() {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0], tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) \n return false\n \n const otherLineString = other\n if (this._points.size() !== otherLineString._points.size()) \n return false\n \n for (let i = 0; i < this._points.size(); i++) \n if (!this.equal(this._points.getCoordinate(i), otherLineString._points.getCoordinate(i), tolerance)) \n return false\n \n \n return true\n } else {\n return super.equalsExact.apply(this, arguments)\n }\n }\n isClosed() {\n if (this.isEmpty()) \n return false\n \n return this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1))\n }\n reverseInternal() {\n const seq = this._points.copy()\n CoordinateSequences.reverse(seq)\n return this.getFactory().createLineString(seq)\n }\n getEndPoint() {\n if (this.isEmpty()) \n return null\n \n return this.getPointN(this.getNumPoints() - 1)\n }\n getTypeCode() {\n return Geometry.TYPECODE_LINESTRING\n }\n getDimension() {\n return 1\n }\n getBoundary() {\n throw new UnsupportedOperationException()\n }\n isEquivalentClass(other) {\n return other instanceof LineString\n }\n getCoordinateSequence() {\n return this._points\n }\n getPointN(n) {\n return this.getFactory().createPoint(this._points.getCoordinate(n))\n }\n normalize() {\n for (let i = 0; i < Math.trunc(this._points.size() / 2); i++) {\n const j = this._points.size() - 1 - i\n if (!this._points.getCoordinate(i).equals(this._points.getCoordinate(j))) {\n if (this._points.getCoordinate(i).compareTo(this._points.getCoordinate(j)) > 0) {\n const copy = this._points.copy()\n CoordinateSequences.reverse(copy)\n this._points = copy\n }\n return null\n }\n }\n }\n getCoordinate() {\n if (this.isEmpty()) return null\n return this._points.getCoordinate(0)\n }\n getBoundaryDimension() {\n if (this.isClosed()) \n return Dimension.FALSE\n \n return 0\n }\n getLength() {\n return Length.ofLine(this._points)\n }\n getNumPoints() {\n return this._points.size()\n }\n compareToSameClass() {\n if (arguments.length === 1) {\n const o = arguments[0]\n const line = o\n let i = 0\n let j = 0\n while (i < this._points.size() && j < line._points.size()) {\n const comparison = this._points.getCoordinate(i).compareTo(line._points.getCoordinate(j))\n if (comparison !== 0) \n return comparison\n \n i++\n j++\n }\n if (i < this._points.size()) \n return 1\n \n if (j < line._points.size()) \n return -1\n \n return 0\n } else if (arguments.length === 2) {\n const o = arguments[0], comp = arguments[1]\n const line = o\n return comp.compare(this._points, line._points)\n }\n }\n apply() {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n for (let i = 0; i < this._points.size(); i++) \n filter.filter(this._points.getCoordinate(i))\n \n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n if (this._points.size() === 0) return null\n for (let i = 0; i < this._points.size(); i++) {\n filter.filter(this._points, i)\n if (filter.isDone()) break\n }\n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n }\n }\n getCoordinateN(n) {\n return this._points.getCoordinate(n)\n }\n getGeometryType() {\n return Geometry.TYPENAME_LINESTRING\n }\n isEmpty() {\n return this._points.size() === 0\n }\n init(points) {\n if (points === null) \n points = this.getFactory().getCoordinateSequenceFactory().create([])\n \n if (points.size() === 1) \n throw new IllegalArgumentException('Invalid number of points in LineString (found ' + points.size() + ' - must be 0 or >= 2)')\n \n this._points = points\n }\n isCoordinate(pt) {\n for (let i = 0; i < this._points.size(); i++) \n if (this._points.getCoordinate(i).equals(pt)) \n return true\n \n \n return false\n }\n getStartPoint() {\n if (this.isEmpty()) \n return null\n \n return this.getPointN(0)\n }\n get interfaces_() {\n return [Lineal]\n }\n}\n","export default class Lineal {}\n","import LineString from './LineString.js'\nimport Geometry from './Geometry.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport CoordinateSequences from './CoordinateSequences.js'\nimport Dimension from './Dimension.js'\nexport default class LinearRing extends LineString {\n constructor() {\n super()\n LinearRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const points = arguments[0], factory = arguments[1]\n LineString.constructor_.call(this, points, factory)\n this.validateConstruction()\n }\n copyInternal() {\n return new LinearRing(this._points.copy(), this._factory)\n }\n getBoundaryDimension() {\n return Dimension.FALSE\n }\n isClosed() {\n if (this.isEmpty()) \n return true\n \n return super.isClosed.call(this)\n }\n reverseInternal() {\n const seq = this._points.copy()\n CoordinateSequences.reverse(seq)\n return this.getFactory().createLinearRing(seq)\n }\n getTypeCode() {\n return Geometry.TYPECODE_LINEARRING\n }\n validateConstruction() {\n if (!this.isEmpty() && !super.isClosed.call(this)) \n throw new IllegalArgumentException('Points of LinearRing do not form a closed linestring')\n \n if (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < LinearRing.MINIMUM_VALID_SIZE) \n throw new IllegalArgumentException('Invalid number of points in LinearRing (found ' + this.getCoordinateSequence().size() + ' - must be 0 or >= 4)')\n \n }\n getGeometryType() {\n return Geometry.TYPENAME_LINEARRING\n }\n}\nLinearRing.MINIMUM_VALID_SIZE = 4\n","import Geometry from './Geometry.js'\nimport Lineal from './Lineal.js'\nimport Dimension from './Dimension.js'\nimport GeometryCollection from './GeometryCollection.js'\nimport UnsupportedOperationException from '../../../../java/lang/UnsupportedOperationException.js'\nexport default class MultiLineString extends GeometryCollection {\n constructor() {\n super()\n MultiLineString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const lineStrings = arguments[0], factory = arguments[1]\n GeometryCollection.constructor_.call(this, lineStrings, factory)\n }\n copyInternal() {\n const lineStrings = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < lineStrings.length; i++) \n lineStrings[i] = this._geometries[i].copy()\n \n return new MultiLineString(lineStrings, this._factory)\n }\n equalsExact() {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0], tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) \n return false\n \n return super.equalsExact.call(this, other, tolerance)\n } else {\n return super.equalsExact.apply(this, arguments)\n }\n }\n getBoundaryDimension() {\n if (this.isClosed()) \n return Dimension.FALSE\n \n return 0\n }\n isClosed() {\n if (this.isEmpty()) \n return false\n \n for (let i = 0; i < this._geometries.length; i++) \n if (!this._geometries[i].isClosed()) \n return false\n \n \n return true\n }\n getTypeCode() {\n return Geometry.TYPECODE_MULTILINESTRING\n }\n getDimension() {\n return 1\n }\n getBoundary() {\n throw new UnsupportedOperationException()\n }\n getGeometryType() {\n return Geometry.TYPENAME_MULTILINESTRING\n }\n get interfaces_() {\n return [Lineal]\n }\n}\n","import Geometry from './Geometry.js'\nimport GeometryCollection from './GeometryCollection.js'\nimport Dimension from './Dimension.js'\nimport Puntal from './Puntal.js'\nexport default class MultiPoint extends GeometryCollection {\n constructor() {\n super()\n MultiPoint.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const points = arguments[0], factory = arguments[1]\n GeometryCollection.constructor_.call(this, points, factory)\n }\n equalsExact() {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0], tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) \n return false\n \n return super.equalsExact.call(this, other, tolerance)\n } else {\n return super.equalsExact.apply(this, arguments)\n }\n }\n getTypeCode() {\n return Geometry.TYPECODE_MULTIPOINT\n }\n getDimension() {\n return 0\n }\n getBoundary() {\n return this.getFactory().createGeometryCollection()\n }\n getGeometryType() {\n return Geometry.TYPENAME_MULTIPOINT\n }\n copyInternal() {\n const points = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < points.length; i++) \n points[i] = this._geometries[i].copy()\n \n return new MultiPoint(points, this._factory)\n }\n isValid() {\n return true\n }\n getCoordinate() {\n if (arguments.length === 1 && Number.isInteger(arguments[0])) {\n const n = arguments[0]\n return this._geometries[n].getCoordinate()\n } else {\n return super.getCoordinate.apply(this, arguments)\n }\n }\n getBoundaryDimension() {\n return Dimension.FALSE\n }\n get interfaces_() {\n return [Puntal]\n }\n}\n","import Geometry from './Geometry.js'\nimport GeometryCollection from './GeometryCollection.js'\nimport Polygonal from './Polygonal.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nexport default class MultiPolygon extends GeometryCollection {\n constructor() {\n super()\n MultiPolygon.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const polygons = arguments[0], factory = arguments[1]\n GeometryCollection.constructor_.call(this, polygons, factory)\n }\n copyInternal() {\n const polygons = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < polygons.length; i++) \n polygons[i] = this._geometries[i].copy()\n \n return new MultiPolygon(polygons, this._factory)\n }\n equalsExact() {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0], tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) \n return false\n \n return super.equalsExact.call(this, other, tolerance)\n } else {\n return super.equalsExact.apply(this, arguments)\n }\n }\n getBoundaryDimension() {\n return 1\n }\n getTypeCode() {\n return Geometry.TYPECODE_MULTIPOLYGON\n }\n getDimension() {\n return 2\n }\n getBoundary() {\n if (this.isEmpty()) \n return this.getFactory().createMultiLineString()\n \n const allRings = new ArrayList()\n for (let i = 0; i < this._geometries.length; i++) {\n const polygon = this._geometries[i]\n const rings = polygon.getBoundary()\n for (let j = 0; j < rings.getNumGeometries(); j++) \n allRings.add(rings.getGeometryN(j))\n \n }\n const allRingsArray = new Array(allRings.size()).fill(null)\n return this.getFactory().createMultiLineString(allRings.toArray(allRingsArray))\n }\n getGeometryType() {\n return Geometry.TYPENAME_MULTIPOLYGON\n }\n get interfaces_() {\n return [Polygonal]\n }\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport GeometryComponentFilter from './GeometryComponentFilter.js'\nimport Dimension from './Dimension.js'\nimport Puntal from './Puntal.js'\nimport IllegalStateException from '../../../../java/lang/IllegalStateException.js'\nimport Geometry from './Geometry.js'\nimport CoordinateFilter from './CoordinateFilter.js'\nimport GeometryFilter from './GeometryFilter.js'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter.js'\nimport Envelope from './Envelope.js'\nimport Assert from '../util/Assert.js'\nexport default class Point extends Geometry {\n constructor() {\n super()\n Point.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._coordinates = null\n const coordinates = arguments[0], factory = arguments[1]\n Geometry.constructor_.call(this, factory)\n this.init(coordinates)\n }\n computeEnvelopeInternal() {\n if (this.isEmpty()) \n return new Envelope()\n \n const env = new Envelope()\n env.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0))\n return env\n }\n getCoordinates() {\n return this.isEmpty() ? [] : [this.getCoordinate()]\n }\n copyInternal() {\n return new Point(this._coordinates.copy(), this._factory)\n }\n equalsExact() {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0], tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) \n return false\n \n if (this.isEmpty() && other.isEmpty()) \n return true\n \n if (this.isEmpty() !== other.isEmpty()) \n return false\n \n return this.equal(other.getCoordinate(), this.getCoordinate(), tolerance)\n } else {\n return super.equalsExact.apply(this, arguments)\n }\n }\n reverseInternal() {\n return this.getFactory().createPoint(this._coordinates.copy())\n }\n getTypeCode() {\n return Geometry.TYPECODE_POINT\n }\n getDimension() {\n return 0\n }\n getNumPoints() {\n return this.isEmpty() ? 0 : 1\n }\n getX() {\n if (this.getCoordinate() === null) \n throw new IllegalStateException('getX called on empty Point')\n \n return this.getCoordinate().x\n }\n getBoundary() {\n return this.getFactory().createGeometryCollection()\n }\n getGeometryType() {\n return Geometry.TYPENAME_POINT\n }\n getCoordinateSequence() {\n return this._coordinates\n }\n getY() {\n if (this.getCoordinate() === null) \n throw new IllegalStateException('getY called on empty Point')\n \n return this.getCoordinate().y\n }\n isSimple() {\n return true\n }\n normalize() {}\n getCoordinate() {\n return this._coordinates.size() !== 0 ? this._coordinates.getCoordinate(0) : null\n }\n getBoundaryDimension() {\n return Dimension.FALSE\n }\n compareToSameClass() {\n if (arguments.length === 1) {\n const other = arguments[0]\n const point = other\n return this.getCoordinate().compareTo(point.getCoordinate())\n } else if (arguments.length === 2) {\n const other = arguments[0], comp = arguments[1]\n const point = other\n return comp.compare(this._coordinates, point._coordinates)\n }\n }\n apply() {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n if (this.isEmpty()) \n return null\n \n filter.filter(this.getCoordinate())\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n if (this.isEmpty()) return null\n filter.filter(this._coordinates, 0)\n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n }\n }\n isEmpty() {\n return this._coordinates.size() === 0\n }\n init(coordinates) {\n if (coordinates === null) \n coordinates = this.getFactory().getCoordinateSequenceFactory().create([])\n \n Assert.isTrue(coordinates.size() <= 1)\n this._coordinates = coordinates\n }\n get interfaces_() {\n return [Puntal]\n }\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport CoordinateSequence from '../geom/CoordinateSequence.js'\nexport default class Area {\n static ofRingSigned() {\n if (arguments[0] instanceof Array) {\n const ring = arguments[0]\n if (ring.length < 3) return 0.0\n let sum = 0.0\n const x0 = ring[0].x\n for (let i = 1; i < ring.length - 1; i++) {\n const x = ring[i].x - x0\n const y1 = ring[i + 1].y\n const y2 = ring[i - 1].y\n sum += x * (y2 - y1)\n }\n return sum / 2.0\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const ring = arguments[0]\n const n = ring.size()\n if (n < 3) return 0.0\n const p0 = new Coordinate()\n const p1 = new Coordinate()\n const p2 = new Coordinate()\n ring.getCoordinate(0, p1)\n ring.getCoordinate(1, p2)\n const x0 = p1.x\n p2.x -= x0\n let sum = 0.0\n for (let i = 1; i < n - 1; i++) {\n p0.y = p1.y\n p1.x = p2.x\n p1.y = p2.y\n ring.getCoordinate(i + 1, p2)\n p2.x -= x0\n sum += p1.x * (p0.y - p2.y)\n }\n return sum / 2.0\n }\n }\n static ofRing() {\n if (arguments[0] instanceof Array) {\n const ring = arguments[0]\n return Math.abs(Area.ofRingSigned(ring))\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const ring = arguments[0]\n return Math.abs(Area.ofRingSigned(ring))\n }\n }\n}\n","import Area from '../algorithm/Area.js'\nimport hasInterface from '../../../../hasInterface.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport Orientation from '../algorithm/Orientation.js'\nimport CoordinateSequences from './CoordinateSequences.js'\nimport GeometryComponentFilter from './GeometryComponentFilter.js'\nimport Polygonal from './Polygonal.js'\nimport Geometry from './Geometry.js'\nimport Arrays from '../../../../java/util/Arrays.js'\nimport CoordinateFilter from './CoordinateFilter.js'\nimport GeometryFilter from './GeometryFilter.js'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter.js'\nexport default class Polygon extends Geometry {\n constructor() {\n super()\n Polygon.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._shell = null\n this._holes = null\n let shell = arguments[0], holes = arguments[1], factory = arguments[2]\n Geometry.constructor_.call(this, factory)\n if (shell === null) \n shell = this.getFactory().createLinearRing()\n \n if (holes === null) \n holes = []\n \n if (Geometry.hasNullElements(holes)) \n throw new IllegalArgumentException('holes must not contain null elements')\n \n if (shell.isEmpty() && Geometry.hasNonEmptyElements(holes)) \n throw new IllegalArgumentException('shell is empty but holes are not')\n \n this._shell = shell\n this._holes = holes\n }\n computeEnvelopeInternal() {\n return this._shell.getEnvelopeInternal()\n }\n getCoordinates() {\n if (this.isEmpty()) \n return []\n \n const coordinates = new Array(this.getNumPoints()).fill(null)\n let k = -1\n const shellCoordinates = this._shell.getCoordinates()\n for (let x = 0; x < shellCoordinates.length; x++) {\n k++\n coordinates[k] = shellCoordinates[x]\n }\n for (let i = 0; i < this._holes.length; i++) {\n const childCoordinates = this._holes[i].getCoordinates()\n for (let j = 0; j < childCoordinates.length; j++) {\n k++\n coordinates[k] = childCoordinates[j]\n }\n }\n return coordinates\n }\n getArea() {\n let area = 0.0\n area += Area.ofRing(this._shell.getCoordinateSequence())\n for (let i = 0; i < this._holes.length; i++) \n area -= Area.ofRing(this._holes[i].getCoordinateSequence())\n \n return area\n }\n equalsExact() {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0], tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) \n return false\n \n const otherPolygon = other\n const thisShell = this._shell\n const otherPolygonShell = otherPolygon._shell\n if (!thisShell.equalsExact(otherPolygonShell, tolerance)) \n return false\n \n if (this._holes.length !== otherPolygon._holes.length) \n return false\n \n for (let i = 0; i < this._holes.length; i++) \n if (!this._holes[i].equalsExact(otherPolygon._holes[i], tolerance)) \n return false\n \n \n return true\n } else {\n return super.equalsExact.apply(this, arguments)\n }\n }\n reverseInternal() {\n const shell = this.getExteriorRing().reverse()\n const holes = new Array(this.getNumInteriorRing()).fill(null)\n for (let i = 0; i < holes.length; i++) \n holes[i] = this.getInteriorRingN(i).reverse()\n \n return this.getFactory().createPolygon(shell, holes)\n }\n getTypeCode() {\n return Geometry.TYPECODE_POLYGON\n }\n getDimension() {\n return 2\n }\n getBoundary() {\n if (this.isEmpty()) \n return this.getFactory().createMultiLineString()\n \n const rings = new Array(this._holes.length + 1).fill(null)\n rings[0] = this._shell\n for (let i = 0; i < this._holes.length; i++) \n rings[i + 1] = this._holes[i]\n \n if (rings.length <= 1) return this.getFactory().createLinearRing(rings[0].getCoordinateSequence())\n return this.getFactory().createMultiLineString(rings)\n }\n getGeometryType() {\n return Geometry.TYPENAME_POLYGON\n }\n getExteriorRing() {\n return this._shell\n }\n copyInternal() {\n const shellCopy = this._shell.copy()\n const holeCopies = new Array(this._holes.length).fill(null)\n for (let i = 0; i < this._holes.length; i++) \n holeCopies[i] = this._holes[i].copy()\n \n return new Polygon(shellCopy, holeCopies, this._factory)\n }\n isRectangle() {\n if (this.getNumInteriorRing() !== 0) return false\n if (this._shell === null) return false\n if (this._shell.getNumPoints() !== 5) return false\n const seq = this._shell.getCoordinateSequence()\n const env = this.getEnvelopeInternal()\n for (let i = 0; i < 5; i++) {\n const x = seq.getX(i)\n if (!(x === env.getMinX() || x === env.getMaxX())) return false\n const y = seq.getY(i)\n if (!(y === env.getMinY() || y === env.getMaxY())) return false\n }\n let prevX = seq.getX(0)\n let prevY = seq.getY(0)\n for (let i = 1; i <= 4; i++) {\n const x = seq.getX(i)\n const y = seq.getY(i)\n const xChanged = x !== prevX\n const yChanged = y !== prevY\n if (xChanged === yChanged) return false\n prevX = x\n prevY = y\n }\n return true\n }\n normalize() {\n if (arguments.length === 0) {\n this._shell = this.normalized(this._shell, true)\n for (let i = 0; i < this._holes.length; i++) \n this._holes[i] = this.normalized(this._holes[i], false)\n \n Arrays.sort(this._holes)\n } else if (arguments.length === 2) {\n const ring = arguments[0], clockwise = arguments[1]\n if (ring.isEmpty()) \n return null\n \n const seq = ring.getCoordinateSequence()\n const minCoordinateIndex = CoordinateSequences.minCoordinateIndex(seq, 0, seq.size() - 2)\n CoordinateSequences.scroll(seq, minCoordinateIndex, true)\n if (Orientation.isCCW(seq) === clockwise) CoordinateSequences.reverse(seq)\n }\n }\n getCoordinate() {\n return this._shell.getCoordinate()\n }\n getNumInteriorRing() {\n return this._holes.length\n }\n getBoundaryDimension() {\n return 1\n }\n getLength() {\n let len = 0.0\n len += this._shell.getLength()\n for (let i = 0; i < this._holes.length; i++) \n len += this._holes[i].getLength()\n \n return len\n }\n getNumPoints() {\n let numPoints = this._shell.getNumPoints()\n for (let i = 0; i < this._holes.length; i++) \n numPoints += this._holes[i].getNumPoints()\n \n return numPoints\n }\n convexHull() {\n return this.getExteriorRing().convexHull()\n }\n normalized(ring, clockwise) {\n const res = ring.copy()\n this.normalize(res, clockwise)\n return res\n }\n compareToSameClass() {\n if (arguments.length === 1) {\n const o = arguments[0]\n const thisShell = this._shell\n const otherShell = o._shell\n return thisShell.compareToSameClass(otherShell)\n } else if (arguments.length === 2) {\n const o = arguments[0], comp = arguments[1]\n const poly = o\n const thisShell = this._shell\n const otherShell = poly._shell\n const shellComp = thisShell.compareToSameClass(otherShell, comp)\n if (shellComp !== 0) return shellComp\n const nHole1 = this.getNumInteriorRing()\n const nHole2 = poly.getNumInteriorRing()\n let i = 0\n while (i < nHole1 && i < nHole2) {\n const thisHole = this.getInteriorRingN(i)\n const otherHole = poly.getInteriorRingN(i)\n const holeComp = thisHole.compareToSameClass(otherHole, comp)\n if (holeComp !== 0) return holeComp\n i++\n }\n if (i < nHole1) return 1\n if (i < nHole2) return -1\n return 0\n }\n }\n apply() {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n this._shell.apply(filter)\n for (let i = 0; i < this._holes.length; i++) \n this._holes[i].apply(filter)\n \n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n this._shell.apply(filter)\n if (!filter.isDone()) \n for (let i = 0; i < this._holes.length; i++) {\n this._holes[i].apply(filter)\n if (filter.isDone()) break\n }\n \n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n this._shell.apply(filter)\n for (let i = 0; i < this._holes.length; i++) \n this._holes[i].apply(filter)\n \n }\n }\n isEmpty() {\n return this._shell.isEmpty()\n }\n getInteriorRingN(n) {\n return this._holes[n]\n }\n get interfaces_() {\n return [Polygonal]\n }\n}\n","export default class Polygonal {}\n","import ArrayList from './ArrayList.js'\nimport MapInterface from './Map.js'\nimport HashSet from './HashSet.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html\n */\nexport default class HashMap extends MapInterface {\n constructor() {\n super()\n this.map = new Map()\n }\n\n get(key) {\n return this.map.get(key) || null\n }\n\n put(key, value) {\n this.map.set(key, value)\n return value\n }\n\n values() {\n const arrayList = new ArrayList()\n const it = this.map.values()\n let o = it.next()\n while (!o.done) {\n arrayList.add(o.value)\n o = it.next()\n }\n return arrayList\n }\n\n entrySet() {\n const hashSet = new HashSet()\n this.map.entries().forEach(entry => hashSet.add(entry))\n return hashSet\n }\n\n size() {\n return this.map.size()\n }\n}\n","import HashMap from '../../../../java/util/HashMap.js'\nimport Coordinate from './Coordinate.js'\nimport Double from '../../../../java/lang/Double.js'\nimport Integer from '../../../../java/lang/Integer.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport Serializable from '../../../../java/io/Serializable.js'\nexport default class PrecisionModel {\n constructor() {\n PrecisionModel.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._modelType = null\n this._scale = null\n if (arguments.length === 0) \n this._modelType = PrecisionModel.FLOATING\n else if (arguments.length === 1) \n if (arguments[0] instanceof Type) {\n const modelType = arguments[0]\n this._modelType = modelType\n if (modelType === PrecisionModel.FIXED) \n this.setScale(1.0)\n \n } else if (typeof arguments[0] === 'number') {\n const scale = arguments[0]\n this._modelType = PrecisionModel.FIXED\n this.setScale(scale)\n } else if (arguments[0] instanceof PrecisionModel) {\n const pm = arguments[0]\n this._modelType = pm._modelType\n this._scale = pm._scale\n }\n \n }\n static mostPrecise(pm1, pm2) {\n if (pm1.compareTo(pm2) >= 0) return pm1\n return pm2\n }\n equals(other) {\n if (!(other instanceof PrecisionModel)) \n return false\n \n const otherPrecisionModel = other\n return this._modelType === otherPrecisionModel._modelType && this._scale === otherPrecisionModel._scale\n }\n compareTo(o) {\n const other = o\n const sigDigits = this.getMaximumSignificantDigits()\n const otherSigDigits = other.getMaximumSignificantDigits()\n return Integer.compare(sigDigits, otherSigDigits)\n }\n getType() {\n return this._modelType\n }\n toString() {\n let description = 'UNKNOWN'\n if (this._modelType === PrecisionModel.FLOATING) \n description = 'Floating'\n else if (this._modelType === PrecisionModel.FLOATING_SINGLE) \n description = 'Floating-Single'\n else if (this._modelType === PrecisionModel.FIXED) \n description = 'Fixed (Scale=' + this.getScale() + ')'\n \n return description\n }\n makePrecise() {\n if (typeof arguments[0] === 'number') {\n const val = arguments[0]\n if (Double.isNaN(val)) return val\n if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n const floatSingleVal = val\n return floatSingleVal\n }\n if (this._modelType === PrecisionModel.FIXED) \n return Math.round(val * this._scale) / this._scale\n \n return val\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n if (this._modelType === PrecisionModel.FLOATING) return null\n coord.x = this.makePrecise(coord.x)\n coord.y = this.makePrecise(coord.y)\n }\n }\n getMaximumSignificantDigits() {\n let maxSigDigits = 16\n if (this._modelType === PrecisionModel.FLOATING) \n maxSigDigits = 16\n else if (this._modelType === PrecisionModel.FLOATING_SINGLE) \n maxSigDigits = 6\n else if (this._modelType === PrecisionModel.FIXED) \n maxSigDigits = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)))\n \n return maxSigDigits\n }\n setScale(scale) {\n this._scale = Math.abs(scale)\n }\n getScale() {\n return this._scale\n }\n isFloating() {\n return this._modelType === PrecisionModel.FLOATING || this._modelType === PrecisionModel.FLOATING_SINGLE\n }\n get interfaces_() {\n return [Serializable, Comparable]\n }\n}\nclass Type {\n constructor() {\n Type.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._name = null\n const name = arguments[0]\n this._name = name\n Type.nameToTypeMap.put(name, this)\n }\n readResolve() {\n return Type.nameToTypeMap.get(this._name)\n }\n toString() {\n return this._name\n }\n get interfaces_() {\n return [Serializable]\n }\n}\nType.nameToTypeMap = new HashMap()\nPrecisionModel.Type = Type\nPrecisionModel.FIXED = new Type('FIXED')\nPrecisionModel.FLOATING = new Type('FLOATING')\nPrecisionModel.FLOATING_SINGLE = new Type('FLOATING SINGLE')\nPrecisionModel.maximumPreciseValue = 9007199254740992.0\n","export default class Puntal {}\n","import hasInterface from '../../../../../hasInterface.js'\nimport Coordinate from '../Coordinate.js'\nimport Double from '../../../../../java/lang/Double.js'\nimport Coordinates from '../Coordinates.js'\nimport CoordinateSequence from '../CoordinateSequence.js'\nimport CoordinateArrays from '../CoordinateArrays.js'\nimport Serializable from '../../../../../java/io/Serializable.js'\nimport StringBuilder from '../../../../../java/lang/StringBuilder.js'\nexport default class CoordinateArraySequence {\n constructor() {\n CoordinateArraySequence.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._dimension = 3\n this._measures = 0\n this._coordinates = null\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n CoordinateArraySequence.constructor_.call(this, coordinates, CoordinateArrays.dimension(coordinates), CoordinateArrays.measures(coordinates))\n } else if (Number.isInteger(arguments[0])) {\n const size = arguments[0]\n this._coordinates = new Array(size).fill(null)\n for (let i = 0; i < size; i++) \n this._coordinates[i] = new Coordinate()\n \n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordSeq = arguments[0]\n if (coordSeq === null) {\n this._coordinates = new Array(0).fill(null)\n return null\n }\n this._dimension = coordSeq.getDimension()\n this._measures = coordSeq.getMeasures()\n this._coordinates = new Array(coordSeq.size()).fill(null)\n for (let i = 0; i < this._coordinates.length; i++) \n this._coordinates[i] = coordSeq.getCoordinateCopy(i)\n \n }\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {\n const coordinates = arguments[0], dimension = arguments[1]\n CoordinateArraySequence.constructor_.call(this, coordinates, dimension, CoordinateArrays.measures(coordinates))\n } else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {\n const size = arguments[0], dimension = arguments[1]\n this._coordinates = new Array(size).fill(null)\n this._dimension = dimension\n for (let i = 0; i < size; i++) \n this._coordinates[i] = Coordinates.create(dimension)\n \n }\n } else if (arguments.length === 3) {\n if (Number.isInteger(arguments[2]) && (arguments[0] instanceof Array && Number.isInteger(arguments[1]))) {\n const coordinates = arguments[0], dimension = arguments[1], measures = arguments[2]\n this._dimension = dimension\n this._measures = measures\n if (coordinates === null) \n this._coordinates = new Array(0).fill(null)\n else \n this._coordinates = coordinates\n \n } else if (Number.isInteger(arguments[2]) && (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1]))) {\n const size = arguments[0], dimension = arguments[1], measures = arguments[2]\n this._coordinates = new Array(size).fill(null)\n this._dimension = dimension\n this._measures = measures\n for (let i = 0; i < size; i++) \n this._coordinates[i] = this.createCoordinate()\n \n }\n }\n }\n getCoordinate() {\n if (arguments.length === 1) {\n const i = arguments[0]\n return this._coordinates[i]\n } else if (arguments.length === 2) {\n const index = arguments[0], coord = arguments[1]\n coord.setCoordinate(this._coordinates[index])\n }\n }\n getCoordinateCopy(i) {\n const copy = this.createCoordinate()\n copy.setCoordinate(this._coordinates[i])\n return copy\n }\n createCoordinate() {\n return Coordinates.create(this.getDimension(), this.getMeasures())\n }\n getDimension() {\n return this._dimension\n }\n getX(index) {\n return this._coordinates[index].x\n }\n getMeasures() {\n return this._measures\n }\n expandEnvelope(env) {\n for (let i = 0; i < this._coordinates.length; i++) \n env.expandToInclude(this._coordinates[i])\n \n return env\n }\n copy() {\n const cloneCoordinates = new Array(this.size()).fill(null)\n for (let i = 0; i < this._coordinates.length; i++) {\n const duplicate = this.createCoordinate()\n duplicate.setCoordinate(this._coordinates[i])\n cloneCoordinates[i] = duplicate\n }\n return new CoordinateArraySequence(cloneCoordinates, this._dimension, this._measures)\n }\n toString() {\n if (this._coordinates.length > 0) {\n const strBuilder = new StringBuilder(17 * this._coordinates.length)\n strBuilder.append('(')\n strBuilder.append(this._coordinates[0])\n for (let i = 1; i < this._coordinates.length; i++) {\n strBuilder.append(', ')\n strBuilder.append(this._coordinates[i])\n }\n strBuilder.append(')')\n return strBuilder.toString()\n } else {\n return '()'\n }\n }\n getY(index) {\n return this._coordinates[index].y\n }\n toCoordinateArray() {\n return this._coordinates\n }\n getM(index) {\n if (this.hasM()) \n return this._coordinates[index].getM()\n else \n return Double.NaN\n \n }\n setOrdinate(index, ordinateIndex, value) {\n switch (ordinateIndex) {\n case CoordinateSequence.X:\n this._coordinates[index].x = value\n break\n case CoordinateSequence.Y:\n this._coordinates[index].y = value\n break\n default:\n this._coordinates[index].setOrdinate(ordinateIndex, value)\n }\n }\n getZ(index) {\n if (this.hasZ()) \n return this._coordinates[index].getZ()\n else \n return Double.NaN\n \n }\n size() {\n return this._coordinates.length\n }\n getOrdinate(index, ordinateIndex) {\n switch (ordinateIndex) {\n case CoordinateSequence.X:\n return this._coordinates[index].x\n case CoordinateSequence.Y:\n return this._coordinates[index].y\n default:\n return this._coordinates[index].getOrdinate(ordinateIndex)\n }\n }\n get interfaces_() {\n return [CoordinateSequence, Serializable]\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport GeometryFactory from '../geom/GeometryFactory.js'\n\nconst geometryTypes = ['Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon']\n\n/**\n * Class for reading and writing Well-Known Text.Create a new parser for GeoJSON\n * NOTE: Adapted from OpenLayers 2.11 implementation.\n */\n\n/**\n * Create a new parser for GeoJSON\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of GeoJsonParser.\n * @constructor\n * @private\n */\nexport default class GeoJSONParser {\n constructor(geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n }\n\n /**\n * Deserialize a GeoJSON object and return the Geometry or Feature(Collection) with JSTS Geometries\n *\n * @param {}\n * A GeoJSON object.\n * @return {} A Geometry instance or object representing a Feature(Collection) with Geometry instances.\n * @private\n */\n read(json) {\n let obj\n if (typeof json === 'string')\n obj = JSON.parse(json)\n else obj = json\n\n const type = obj.type\n\n if (!parse[type]) throw new Error('Unknown GeoJSON type: ' + obj.type)\n\n if (geometryTypes.indexOf(type) !== -1)\n return parse[type].call(this, obj.coordinates)\n else if (type === 'GeometryCollection') return parse[type].call(this, obj.geometries)\n\n // feature or feature collection\n return parse[type].call(this, obj)\n }\n\n /**\n * Serialize a Geometry object into GeoJSON\n *\n * @param {Geometry}\n * geometry A Geometry or array of Geometries.\n * @return {Object} A GeoJSON object represting the input Geometry/Geometries.\n * @private\n */\n write(geometry) {\n const type = geometry.getGeometryType()\n\n if (!extract[type]) throw new Error('Geometry is not supported')\n\n return extract[type].call(this, geometry)\n }\n}\n\nconst parse = {\n /**\n * Parse a GeoJSON Feature object\n *\n * @param {Object}\n * obj Object to parse.\n *\n * @return {Object} Feature with geometry/bbox converted to JSTS Geometries.\n */\n Feature: function(obj) {\n const feature = {}\n\n for (const key in obj) feature[key] = obj[key]\n\n if (obj.geometry) {\n const type = obj.geometry.type\n if (!parse[type]) throw new Error('Unknown GeoJSON type: ' + obj.type)\n feature.geometry = this.read(obj.geometry)\n }\n\n if (obj.bbox) feature.bbox = parse.bbox.call(this, obj.bbox)\n\n return feature\n },\n\n /**\n * Parse a GeoJSON FeatureCollection object\n *\n * @param {Object}\n * obj Object to parse.\n *\n * @return {Object} FeatureCollection with geometry/bbox converted to JSTS Geometries.\n */\n FeatureCollection: function(obj) {\n const featureCollection = {}\n\n if (obj.features) {\n featureCollection.features = []\n\n for (let i = 0; i < obj.features.length; ++i) featureCollection.features.push(this.read(obj.features[i]))\n }\n\n if (obj.bbox) featureCollection.bbox = this.parse.bbox.call(this, obj.bbox)\n\n return featureCollection\n },\n\n /**\n * Convert the ordinates in an array to an array of Coordinates\n *\n * @param {Array}\n * array Array with {Number}s.\n *\n * @return {Array} Array with Coordinates.\n */\n coordinates: function(array) {\n const coordinates = []\n for (let i = 0; i < array.length; ++i) {\n const sub = array[i]\n coordinates.push(new Coordinate(...sub))\n }\n return coordinates\n },\n\n /**\n * Convert the bbox to a LinearRing\n *\n * @param {Array}\n * array Array with [xMin, yMin, xMax, yMax].\n *\n * @return {Array} Array with Coordinates.\n */\n bbox: function(array) {\n return this.geometryFactory.createLinearRing([\n new Coordinate(array[0], array[1]),\n new Coordinate(array[2], array[1]),\n new Coordinate(array[2], array[3]),\n new Coordinate(array[0], array[3]),\n new Coordinate(array[0], array[1])\n ])\n },\n\n /**\n * Convert an Array with ordinates to a Point\n *\n * @param {Array}\n * array Array with ordinates.\n *\n * @return {Point} Point.\n */\n Point: function(array) {\n const coordinate = new Coordinate(...array)\n return this.geometryFactory.createPoint(coordinate)\n },\n\n /**\n * Convert an Array with coordinates to a MultiPoint\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {MultiPoint} MultiPoint.\n */\n MultiPoint: function(array) {\n const points = []\n for (let i = 0; i < array.length; ++i) points.push(parse.Point.call(this, array[i]))\n return this.geometryFactory.createMultiPoint(points)\n },\n\n /**\n * Convert an Array with coordinates to a LineString\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {LineString} LineString.\n */\n LineString: function(array) {\n const coordinates = parse.coordinates.call(this, array)\n return this.geometryFactory.createLineString(coordinates)\n },\n\n /**\n * Convert an Array with coordinates to a MultiLineString\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {MultiLineString} MultiLineString.\n */\n MultiLineString: function(array) {\n const lineStrings = []\n for (let i = 0; i < array.length; ++i) lineStrings.push(parse.LineString.call(this, array[i]))\n return this.geometryFactory.createMultiLineString(lineStrings)\n },\n\n /**\n * Convert an Array to a Polygon\n *\n * @param {Array}\n * array Array with shell and holes.\n *\n * @return {Polygon} Polygon.\n */\n Polygon: function(array) {\n const shellCoordinates = parse.coordinates.call(this, array[0])\n const shell = this.geometryFactory.createLinearRing(shellCoordinates)\n const holes = []\n for (let i = 1; i < array.length; ++i) {\n const hole = array[i]\n const coordinates = parse.coordinates.call(this, hole)\n const linearRing = this.geometryFactory.createLinearRing(coordinates)\n holes.push(linearRing)\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n /**\n * Convert an Array to a MultiPolygon\n *\n * @param {Array}\n * array Array of arrays with shell and rings.\n *\n * @return {MultiPolygon} MultiPolygon.\n */\n MultiPolygon: function(array) {\n const polygons = []\n for (let i = 0; i < array.length; ++i) {\n const polygon = array[i]\n polygons.push(parse.Polygon.call(this, polygon))\n }\n return this.geometryFactory.createMultiPolygon(polygons)\n },\n\n /**\n * Convert an Array to a GeometryCollection\n *\n * @param {Array}\n * array Array of GeoJSON geometries.\n *\n * @return {GeometryCollection} GeometryCollection.\n */\n GeometryCollection: function(array) {\n const geometries = []\n for (let i = 0; i < array.length; ++i) {\n const geometry = array[i]\n geometries.push(this.read(geometry))\n }\n return this.geometryFactory.createGeometryCollection(geometries)\n }\n}\n\nconst extract = {\n /**\n * Convert a Coordinate to an Array\n *\n * @param {Coordinate}\n * coordinate Coordinate to convert.\n *\n * @return {Array} Array of ordinates.\n */\n coordinate: function(coordinate) {\n const a = [coordinate.x, coordinate.y]\n if (coordinate.z)\n a.push(coordinate.z)\n if (coordinate.m)\n a.push(coordinate.m)\n return a\n },\n\n /**\n * Convert a Point to a GeoJSON object\n *\n * @param {Point}\n * point Point to convert.\n *\n * @return {Array} Array of 2 ordinates (paired to a coordinate).\n */\n Point: function(point) {\n const array = extract.coordinate.call(this, point.getCoordinate())\n return {\n type: 'Point',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiPoint to a GeoJSON object\n *\n * @param {MultiPoint}\n * multipoint MultiPoint to convert.\n *\n * @return {Array} Array of coordinates.\n */\n MultiPoint: function(multipoint) {\n const array = []\n for (let i = 0; i < multipoint._geometries.length; ++i) {\n const point = multipoint._geometries[i]\n const geoJson = extract.Point.call(this, point)\n array.push(geoJson.coordinates)\n }\n return {\n type: 'MultiPoint',\n coordinates: array\n }\n },\n\n /**\n * Convert a LineString to a GeoJSON object\n *\n * @param {LineString}\n * linestring LineString to convert.\n *\n * @return {Array} Array of coordinates.\n */\n LineString: function(linestring) {\n const array = []\n const coordinates = linestring.getCoordinates()\n for (let i = 0; i < coordinates.length; ++i) {\n const coordinate = coordinates[i]\n array.push(extract.coordinate.call(this, coordinate))\n }\n return {\n type: 'LineString',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiLineString to a GeoJSON object\n *\n * @param {MultiLineString}\n * multilinestring MultiLineString to convert.\n *\n * @return {Array} Array of Array of coordinates.\n */\n MultiLineString: function(multilinestring) {\n const array = []\n for (let i = 0; i < multilinestring._geometries.length; ++i) {\n const linestring = multilinestring._geometries[i]\n const geoJson = extract.LineString.call(this, linestring)\n array.push(geoJson.coordinates)\n }\n return {\n type: 'MultiLineString',\n coordinates: array\n }\n },\n\n /**\n * Convert a Polygon to a GeoJSON object\n *\n * @param {Polygon}\n * polygon Polygon to convert.\n *\n * @return {Array} Array with shell, holes.\n */\n Polygon: function(polygon) {\n const array = []\n const shellGeoJson = extract.LineString.call(this, polygon._shell)\n array.push(shellGeoJson.coordinates)\n for (let i = 0; i < polygon._holes.length; ++i) {\n const hole = polygon._holes[i]\n const holeGeoJson = extract.LineString.call(this, hole)\n array.push(holeGeoJson.coordinates)\n }\n return {\n type: 'Polygon',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiPolygon to a GeoJSON object\n *\n * @param {MultiPolygon}\n * multipolygon MultiPolygon to convert.\n *\n * @return {Array} Array of polygons.\n */\n MultiPolygon: function(multipolygon) {\n const array = []\n for (let i = 0; i < multipolygon._geometries.length; ++i) {\n const polygon = multipolygon._geometries[i]\n const geoJson = extract.Polygon.call(this, polygon)\n array.push(geoJson.coordinates)\n }\n return {\n type: 'MultiPolygon',\n coordinates: array\n }\n },\n\n /**\n * Convert a GeometryCollection to a GeoJSON object\n *\n * @param {GeometryCollection}\n * collection GeometryCollection to convert.\n *\n * @return {Array} Array of geometries.\n */\n GeometryCollection: function(collection) {\n const array = []\n for (let i = 0; i < collection._geometries.length; ++i) {\n const geometry = collection._geometries[i]\n const type = geometry.getGeometryType()\n array.push(extract[type].call(this, geometry))\n }\n return {\n type: 'GeometryCollection',\n geometries: array\n }\n }\n}\n","/**\n * @module org/locationtech/jts/io/GeoJSONReader\n */\n\nimport GeometryFactory from '../geom/GeometryFactory.js'\nimport GeoJSONParser from './GeoJSONParser.js'\n\n/**\n * Converts a geometry in GeoJSON to a {@link Geometry}.\n */\nexport default class GeoJSONReader {\n /**\n * A GeoJSONReader is parameterized by a GeometryFactory,\n * to allow it to create Geometry objects of the appropriate\n * implementation. In particular, the GeometryFactory determines\n * the PrecisionModel and SRID that is used.\n *\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new GeoJSONParser(geometryFactory || new GeometryFactory())\n }\n\n /**\n * Reads a GeoJSON representation of a {@link Geometry}\n *\n * Will also parse GeoJSON Features/FeatureCollections as custom objects.\n *\n * @param {Object|String} geoJson a GeoJSON Object or String.\n * @return {Geometry|Object} a Geometry or Feature/FeatureCollection representation.\n * @memberof module:org/locationtech/jts/io/GeoJSONReader#\n */\n read(geoJson) {\n const geometry = this.parser.read(geoJson)\n return geometry\n }\n}\n","/**\n * @module org/locationtech/jts/io/GeoJSONWriter\n */\n\nimport GeoJSONParser from './GeoJSONParser.js'\n\n/**\n * Writes the GeoJSON representation of a {@link Geometry}. The\n * The GeoJSON format is defined here.\n */\nexport default class GeoJSONWriter {\n /**\n * The GeoJSONWriter outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\n constructor() {\n this.parser = new GeoJSONParser(this.geometryFactory)\n }\n\n /**\n * Converts a Geometry to its GeoJSON representation.\n *\n * @param {Geometry}\n * geometry a Geometry to process.\n * @return {Object} The GeoJSON representation of the Geometry.\n * @memberof module:org/locationtech/jts/io/GeoJSONWriter#\n */\n write(geometry) {\n return this.parser.write(geometry)\n }\n}\n","/**\n * @module org/locationtech/jts/io/WKTReader\n */\n\nimport GeometryFactory from '../geom/GeometryFactory.js'\nimport WKTParser from './WKTParser.js'\n\n/**\n * Converts a geometry in Well-Known Text format to a {@link Geometry}.\n *

    \n * WKTReader supports extracting Geometry objects\n * from either {@link Reader}s or {@link String}s. This allows it to function\n * as a parser to read Geometry objects from text blocks embedded\n * in other data formats (e.g. XML).\n */\n\nexport default class WKTReader {\n /**\n * A WKTReader is parameterized by a GeometryFactory,\n * to allow it to create Geometry objects of the appropriate\n * implementation. In particular, the GeometryFactory determines\n * the PrecisionModel and SRID that is used.\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory || new GeometryFactory())\n }\n\n /**\n * Reads a Well-Known Text representation of a {@link Geometry}\n *\n * @param {string}\n * wkt a string (see the OpenGIS Simple Features\n * Specification).\n * @return {Geometry} a Geometry read from\n * string.\n * @memberof module:org/locationtech/jts/io/WKTReader#\n */\n read(wkt) {\n return this.parser.read(wkt)\n }\n}\n","/* eslint-disable no-undef */\n\n/**\n * @module org/locationtech/jts/io/OL3Parser\n */\n\nimport Coordinate from '../geom/Coordinate.js'\nimport GeometryFactory from '../geom/GeometryFactory.js'\n\nfunction p2c(p) {\n return [p.x, p.y]\n}\n\nexport default class OL3Parser {\n /**\n * OpenLayers Geometry parser and writer\n * @param {GeometryFactory} geometryFactory\n * @param {ol} olReference\n */\n constructor(geometryFactory, olReference) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.ol = olReference || (typeof ol !== 'undefined' && ol)\n }\n\n /**\n * Inject OpenLayers geom classes\n */\n inject(Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection) {\n this.ol = {\n geom: {\n Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection\n }\n }\n }\n\n /**\n * @param geometry {ol.geom.Geometry}\n * @return {Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n read(geometry) {\n const ol = this.ol\n if (geometry instanceof ol.geom.Point)\n return this.convertFromPoint(geometry)\n else if (geometry instanceof ol.geom.LineString)\n return this.convertFromLineString(geometry)\n else if (geometry instanceof ol.geom.LinearRing)\n return this.convertFromLinearRing(geometry)\n else if (geometry instanceof ol.geom.Polygon)\n return this.convertFromPolygon(geometry)\n else if (geometry instanceof ol.geom.MultiPoint)\n return this.convertFromMultiPoint(geometry)\n else if (geometry instanceof ol.geom.MultiLineString)\n return this.convertFromMultiLineString(geometry)\n else if (geometry instanceof ol.geom.MultiPolygon)\n return this.convertFromMultiPolygon(geometry)\n else if (geometry instanceof ol.geom.GeometryCollection) return this.convertFromCollection(geometry)\n }\n\n convertFromPoint(point) {\n const coordinates = point.getCoordinates()\n return this.geometryFactory.createPoint(new Coordinate(coordinates[0], coordinates[1]))\n }\n\n convertFromLineString(lineString) {\n return this.geometryFactory.createLineString(lineString.getCoordinates().map(function(coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromLinearRing(linearRing) {\n return this.geometryFactory.createLinearRing(linearRing.getCoordinates().map(function(coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromPolygon(polygon) {\n const linearRings = polygon.getLinearRings()\n let shell = null\n const holes = []\n for (let i = 0; i < linearRings.length; i++) {\n const linearRing = this.convertFromLinearRing(linearRings[i])\n if (i === 0)\n shell = linearRing\n else holes.push(linearRing)\n }\n return this.geometryFactory.createPolygon(shell, holes)\n }\n\n convertFromMultiPoint(multiPoint) {\n const points = multiPoint.getPoints().map(function(point) {\n return this.convertFromPoint(point)\n }, this)\n return this.geometryFactory.createMultiPoint(points)\n }\n\n convertFromMultiLineString(multiLineString) {\n const lineStrings = multiLineString.getLineStrings().map(function(lineString) {\n return this.convertFromLineString(lineString)\n }, this)\n return this.geometryFactory.createMultiLineString(lineStrings)\n }\n\n convertFromMultiPolygon(multiPolygon) {\n const polygons = multiPolygon.getPolygons().map(function(polygon) {\n return this.convertFromPolygon(polygon)\n }, this)\n return this.geometryFactory.createMultiPolygon(polygons)\n }\n\n convertFromCollection(collection) {\n const geometries = collection.getGeometries().map(function(geometry) {\n return this.read(geometry)\n }, this)\n return this.geometryFactory.createGeometryCollection(geometries)\n }\n\n /**\n * @param geometry\n * {Geometry}\n * @return {ol.geom.Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n write(geometry) {\n if (geometry.getGeometryType() === 'Point')\n return this.convertToPoint(geometry.getCoordinate())\n else if (geometry.getGeometryType() === 'LineString')\n return this.convertToLineString(geometry)\n else if (geometry.getGeometryType() === 'LinearRing')\n return this.convertToLinearRing(geometry)\n else if (geometry.getGeometryType() === 'Polygon')\n return this.convertToPolygon(geometry)\n else if (geometry.getGeometryType() === 'MultiPoint')\n return this.convertToMultiPoint(geometry)\n else if (geometry.getGeometryType() === 'MultiLineString')\n return this.convertToMultiLineString(geometry)\n else if (geometry.getGeometryType() === 'MultiPolygon')\n return this.convertToMultiPolygon(geometry)\n else if (geometry.getGeometryType() === 'GeometryCollection') return this.convertToCollection(geometry)\n }\n\n convertToPoint(coordinate) {\n return new this.ol.geom.Point([coordinate.x, coordinate.y])\n }\n\n convertToLineString(lineString) {\n const points = lineString._points._coordinates.map(p2c)\n return new this.ol.geom.LineString(points)\n }\n\n convertToLinearRing(linearRing) {\n const points = linearRing._points._coordinates.map(p2c)\n return new this.ol.geom.LinearRing(points)\n }\n\n convertToPolygon(polygon) {\n const rings = [polygon._shell._points._coordinates.map(p2c)]\n for (let i = 0; i < polygon._holes.length; i++) rings.push(polygon._holes[i]._points._coordinates.map(p2c))\n\n return new this.ol.geom.Polygon(rings)\n }\n\n convertToMultiPoint(multiPoint) {\n return new this.ol.geom.MultiPoint(multiPoint.getCoordinates().map(p2c))\n }\n\n convertToMultiLineString(multiLineString) {\n const lineStrings = []\n for (let i = 0; i < multiLineString._geometries.length; i++) lineStrings.push(this.convertToLineString(multiLineString._geometries[i]).getCoordinates())\n\n return new this.ol.geom.MultiLineString(lineStrings)\n }\n\n convertToMultiPolygon(multiPolygon) {\n const polygons = []\n for (let i = 0; i < multiPolygon._geometries.length; i++) polygons.push(this.convertToPolygon(multiPolygon._geometries[i]).getCoordinates())\n\n return new this.ol.geom.MultiPolygon(polygons)\n }\n\n convertToCollection(geometryCollection) {\n const geometries = []\n for (let i = 0; i < geometryCollection._geometries.length; i++) {\n const geometry = geometryCollection._geometries[i]\n geometries.push(this.write(geometry))\n }\n return new this.ol.geom.GeometryCollection(geometries)\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport GeometryFactory from '../geom/GeometryFactory.js'\n\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nconst GeometryLayout = {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM',\n}\n\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nconst GeometryType = {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle',\n}\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [splitCollection=false] Whether to split GeometryCollections into\n * multiple features on reading.\n */\n\n/**\n * @typedef {Object} Token\n * @property {number} type\n * @property {number|string} [value]\n * @property {number} position\n */\n\n/**\n * @const\n * @type {string}\n */\nconst EMPTY = 'EMPTY'\n\n/**\n * @const\n * @type {string}\n */\nconst Z = 'Z'\n\n/**\n * @const\n * @type {string}\n */\nconst M = 'M'\n\n/**\n * @const\n * @type {string}\n */\nconst ZM = 'ZM'\n\n/**\n * @const\n * @enum {number}\n */\nconst TokenType = {\n TEXT: 1,\n LEFT_PAREN: 2,\n RIGHT_PAREN: 3,\n NUMBER: 4,\n COMMA: 5,\n EOF: 6,\n}\n\n/**\n * @const\n * @type {Object}\n */\nconst WKTGeometryType = {}\nfor (const type in GeometryType)\n WKTGeometryType[type] = GeometryType[type].toUpperCase()\n\n\n/**\n * Class to tokenize a WKT string.\n */\nclass Lexer {\n /**\n * @param {string} wkt WKT string.\n */\n constructor(wkt) {\n /**\n * @type {string}\n */\n this.wkt = wkt\n\n /**\n * @type {number}\n * @private\n */\n this.index_ = -1\n }\n\n /**\n * @param {string} c Character.\n * @return {boolean} Whether the character is alphabetic.\n * @private\n */\n isAlpha_(c) {\n return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')\n }\n\n /**\n * @param {string} c Character.\n * @param {boolean=} opt_decimal Whether the string number\n * contains a dot, i.e. is a decimal number.\n * @return {boolean} Whether the character is numeric.\n * @private\n */\n isNumeric_(c, opt_decimal) {\n const decimal = opt_decimal !== undefined ? opt_decimal : false\n return (c >= '0' && c <= '9') || (c == '.' && !decimal)\n }\n\n /**\n * @param {string} c Character.\n * @return {boolean} Whether the character is whitespace.\n * @private\n */\n isWhiteSpace_(c) {\n return c == ' ' || c == '\\t' || c == '\\r' || c == '\\n'\n }\n\n /**\n * @return {string} Next string character.\n * @private\n */\n nextChar_() {\n return this.wkt.charAt(++this.index_)\n }\n\n /**\n * Fetch and return the next token.\n * @return {!Token} Next string token.\n */\n nextToken() {\n const c = this.nextChar_()\n const position = this.index_\n /** @type {number|string} */\n let value = c\n let type\n\n if (c == '(') {\n type = TokenType.LEFT_PAREN\n } else if (c == ',') {\n type = TokenType.COMMA\n } else if (c == ')') {\n type = TokenType.RIGHT_PAREN\n } else if (this.isNumeric_(c) || c == '-') {\n type = TokenType.NUMBER\n value = this.readNumber_()\n } else if (this.isAlpha_(c)) {\n type = TokenType.TEXT\n value = this.readText_()\n } else if (this.isWhiteSpace_(c)) {\n return this.nextToken()\n } else if (c === '') {\n type = TokenType.EOF\n } else {\n throw new Error('Unexpected character: ' + c)\n }\n\n return { position: position, value: value, type: type }\n }\n\n /**\n * @return {number} Numeric token value.\n * @private\n */\n readNumber_() {\n let c\n const index = this.index_\n let decimal = false\n let scientificNotation = false\n do {\n if (c == '.')\n decimal = true\n else if (c == 'e' || c == 'E')\n scientificNotation = true\n c = this.nextChar_()\n } while (\n this.isNumeric_(c, decimal) ||\n // if we haven't detected a scientific number before, 'e' or 'E'\n // hint that we should continue to read\n (!scientificNotation && (c == 'e' || c == 'E')) ||\n // once we know that we have a scientific number, both '-' and '+'\n // are allowed\n (scientificNotation && (c == '-' || c == '+'))\n )\n return parseFloat(this.wkt.substring(index, this.index_--))\n }\n\n /**\n * @return {string} String token value.\n * @private\n */\n readText_() {\n let c\n const index = this.index_\n do\n c = this.nextChar_()\n while (this.isAlpha_(c))\n return this.wkt.substring(index, this.index_--).toUpperCase()\n }\n}\n\n/**\n * Class to parse the tokens from the WKT string.\n */\nclass Parser {\n /**\n * @param {Lexer} lexer The lexer.\n */\n constructor(lexer, factory) {\n /**\n * @type {Lexer}\n * @private\n */\n this.lexer_ = lexer\n\n /**\n * @type {Token}\n * @private\n */\n this.token_\n\n /**\n * @type {import(\"../geom/GeometryLayout.js\").default}\n * @private\n */\n this.layout_ = GeometryLayout.XY\n\n this.factory = factory\n }\n\n /**\n * Fetch the next token form the lexer and replace the active token.\n * @private\n */\n consume_() {\n this.token_ = this.lexer_.nextToken()\n }\n\n /**\n * Tests if the given type matches the type of the current token.\n * @param {TokenType} type Token type.\n * @return {boolean} Whether the token matches the given type.\n */\n isTokenType(type) {\n const isMatch = this.token_.type == type\n return isMatch\n }\n\n /**\n * If the given type matches the current token, consume it.\n * @param {TokenType} type Token type.\n * @return {boolean} Whether the token matches the given type.\n */\n match(type) {\n const isMatch = this.isTokenType(type)\n if (isMatch) \n this.consume_()\n return isMatch\n }\n\n /**\n * Try to parse the tokens provided by the lexer.\n * @return {import(\"../geom/Geometry.js\").default} The geometry.\n */\n parse() {\n this.consume_()\n const geometry = this.parseGeometry_()\n return geometry\n }\n\n /**\n * Try to parse the dimensional info.\n * @return {import(\"../geom/GeometryLayout.js\").default} The layout.\n * @private\n */\n parseGeometryLayout_() {\n let layout = GeometryLayout.XY\n const dimToken = this.token_\n if (this.isTokenType(TokenType.TEXT)) {\n const dimInfo = dimToken.value\n if (dimInfo === Z)\n layout = GeometryLayout.XYZ\n else if (dimInfo === M)\n layout = GeometryLayout.XYM\n else if (dimInfo === ZM)\n layout = GeometryLayout.XYZM\n if (layout !== GeometryLayout.XY)\n this.consume_()\n }\n return layout\n }\n\n /**\n * @return {!Array} A collection of geometries.\n * @private\n */\n parseGeometryCollectionText_() {\n if (this.match(TokenType.LEFT_PAREN)) {\n const geometries = []\n do\n geometries.push(this.parseGeometry_())\n while (this.match(TokenType.COMMA))\n if (this.match(TokenType.RIGHT_PAREN)) \n return geometries\n } else if (this.isEmptyGeometry_()) {\n return []\n }\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {Array} All values in a point.\n * @private\n */\n parsePointText_() {\n if (this.match(TokenType.LEFT_PAREN)) {\n const coordinates = this.parsePoint_()\n if (this.match(TokenType.RIGHT_PAREN)) \n return coordinates\n } else if (this.isEmptyGeometry_()) {\n return null\n }\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {!Array>} All points in a linestring.\n * @private\n */\n parseLineStringText_() {\n if (this.match(TokenType.LEFT_PAREN)) {\n const coordinates = this.parsePointList_()\n if (this.match(TokenType.RIGHT_PAREN)) \n return coordinates\n } else if (this.isEmptyGeometry_()) {\n return []\n }\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {!Array>>} All points in a polygon.\n * @private\n */\n parsePolygonText_() {\n if (this.match(TokenType.LEFT_PAREN)) {\n const coordinates = this.parseLineStringTextList_()\n if (this.match(TokenType.RIGHT_PAREN)) \n return coordinates\n } else if (this.isEmptyGeometry_()) {\n return []\n }\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {!Array>} All points in a multipoint.\n * @private\n */\n parseMultiPointText_() {\n if (this.match(TokenType.LEFT_PAREN)) {\n let coordinates\n if (this.token_.type == TokenType.LEFT_PAREN) \n coordinates = this.parsePointTextList_()\n else\n coordinates = this.parsePointList_()\n if (this.match(TokenType.RIGHT_PAREN)) \n return coordinates\n } else if (this.isEmptyGeometry_()) {\n return []\n }\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {!Array>>} All linestring points\n * in a multilinestring.\n * @private\n */\n parseMultiLineStringText_() {\n if (this.match(TokenType.LEFT_PAREN)) {\n const coordinates = this.parseLineStringTextList_()\n if (this.match(TokenType.RIGHT_PAREN)) \n return coordinates\n } else if (this.isEmptyGeometry_()) {\n return []\n }\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {!Array>>>} All polygon points in a multipolygon.\n * @private\n */\n parseMultiPolygonText_() {\n if (this.match(TokenType.LEFT_PAREN)) {\n const coordinates = this.parsePolygonTextList_()\n if (this.match(TokenType.RIGHT_PAREN)) \n return coordinates\n } else if (this.isEmptyGeometry_()) {\n return []\n }\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {!Array} A point.\n * @private\n */\n parsePoint_() {\n const coordinates = []\n const dimensions = this.layout_.length\n for (let i = 0; i < dimensions; ++i) {\n const token = this.token_\n if (this.match(TokenType.NUMBER)) \n coordinates.push(/** @type {number} */(token.value))\n else\n break\n }\n if (coordinates.length == dimensions) \n return coordinates\n throw new Error(this.formatErrorMessage_())\n }\n\n /**\n * @return {!Array>} An array of points.\n * @private\n */\n parsePointList_() {\n const coordinates = [this.parsePoint_()]\n while (this.match(TokenType.COMMA))\n coordinates.push(this.parsePoint_())\n return coordinates\n }\n\n /**\n * @return {!Array>} An array of points.\n * @private\n */\n parsePointTextList_() {\n const coordinates = [this.parsePointText_()]\n while (this.match(TokenType.COMMA))\n coordinates.push(this.parsePointText_())\n return coordinates\n }\n\n /**\n * @return {!Array>>} An array of points.\n * @private\n */\n parseLineStringTextList_() {\n const coordinates = [this.parseLineStringText_()]\n while (this.match(TokenType.COMMA))\n coordinates.push(this.parseLineStringText_())\n return coordinates\n }\n\n /**\n * @return {!Array>>>} An array of points.\n * @private\n */\n parsePolygonTextList_() {\n const coordinates = [this.parsePolygonText_()]\n while (this.match(TokenType.COMMA))\n coordinates.push(this.parsePolygonText_())\n return coordinates\n }\n\n /**\n * @return {boolean} Whether the token implies an empty geometry.\n * @private\n */\n isEmptyGeometry_() {\n const isEmpty =\n this.isTokenType(TokenType.TEXT) && this.token_.value == EMPTY\n if (isEmpty)\n this.consume_()\n return isEmpty\n }\n\n /**\n * Create an error message for an unexpected token error.\n * @return {string} Error message.\n * @private\n */\n formatErrorMessage_() {\n return (\n 'Unexpected `' +\n this.token_.value +\n '` at position ' +\n this.token_.position +\n ' in `' +\n this.lexer_.wkt +\n '`'\n )\n }\n\n /**\n * @return {!import(\"../geom/Geometry.js\").default} The geometry.\n * @private\n */\n parseGeometry_() {\n const factory = this.factory\n\n const o2c = ordinates => ordinates ? new Coordinate(...ordinates) : new Coordinate()\n const ca2p = coordinates => {\n const rings = coordinates.map(a => factory.createLinearRing(a.map(o2c)))\n if (rings.length > 1)\n return factory.createPolygon(rings[0], rings.slice(1))\n else if (rings.length === 1)\n return factory.createPolygon(rings[0])\n else\n return factory.createPolygon()\n }\n\n const token = this.token_\n if (this.match(TokenType.TEXT)) {\n const geomType = token.value\n this.layout_ = this.parseGeometryLayout_()\n if (geomType == 'GEOMETRYCOLLECTION') {\n const geometries = this.parseGeometryCollectionText_()\n return factory.createGeometryCollection(geometries)\n } else {\n switch (geomType) {\n case 'POINT': {\n const ordinates = this.parsePointText_()\n if (!ordinates)\n return factory.createPoint()\n return factory.createPoint(new Coordinate(...ordinates))\n }\n case 'LINESTRING': {\n const coordinates = this.parseLineStringText_()\n const components = coordinates.map(o2c)\n return factory.createLineString(components)\n }\n case 'LINEARRING': {\n const coordinates = this.parseLineStringText_()\n const components = coordinates.map(o2c)\n return factory.createLinearRing(components)\n }\n case 'POLYGON': {\n const coordinates = this.parsePolygonText_()\n if (!coordinates || coordinates.length === 0)\n return factory.createPolygon()\n return ca2p(coordinates)\n }\n case 'MULTIPOINT': {\n const coordinates = this.parseMultiPointText_()\n if (!coordinates || coordinates.length === 0)\n return factory.createMultiPoint()\n const components = coordinates.map(o2c).map(c => factory.createPoint(c))\n return factory.createMultiPoint(components)\n }\n case 'MULTILINESTRING': {\n const coordinates = this.parseMultiLineStringText_()\n const components = coordinates.map(a => factory.createLineString(a.map(o2c)))\n return factory.createMultiLineString(components)\n }\n case 'MULTIPOLYGON': {\n const coordinates = this.parseMultiPolygonText_()\n if (!coordinates || coordinates.length === 0)\n return factory.createMultiPolygon()\n const polygons = coordinates.map(ca2p)\n return factory.createMultiPolygon(polygons)\n }\n default: {\n throw new Error('Invalid geometry type: ' + geomType)\n }\n }\n }\n }\n throw new Error(this.formatErrorMessage_())\n }\n}\n\n/**\n * @param {Point} geom Point geometry.\n * @return {string} Coordinates part of Point as WKT.\n */\nfunction encodePointGeometry(geom) {\n if (geom.isEmpty())\n return ''\n const c = geom.getCoordinate()\n const cs = [c.x, c.y]\n if (c.z !== undefined && !Number.isNaN(c.z))\n cs.push(c.z)\n if (c.m !== undefined && !Number.isNaN(c.m))\n cs.push(c.m)\n return cs.join(' ')\n}\n\n/**\n * @param {MultiPoint} geom MultiPoint geometry.\n * @return {string} Coordinates part of MultiPoint as WKT.\n */\nfunction encodeMultiPointGeometry(geom) {\n const array = []\n for (let i = 0, ii = geom.getNumGeometries(); i < ii; ++i) \n array.push('(' + encodePointGeometry(geom.getGeometryN(i)) + ')')\n return array.join(', ')\n}\n\n/**\n * @param {GeometryCollection} geom GeometryCollection geometry.\n * @return {string} Coordinates part of GeometryCollection as WKT.\n */\nfunction encodeGeometryCollectionGeometry(geom) {\n const array = []\n for (let i = 0, ii = geom.getNumGeometries(); i < ii; ++i) \n array.push(encode(geom.getGeometryN(i)))\n return array.join(', ')\n}\n\n/**\n * @param {LineString|import(\"../geom/LinearRing.js\").default} geom LineString geometry.\n * @return {string} Coordinates part of LineString as WKT.\n */\nfunction encodeLineStringGeometry(geom) {\n const coordinates = geom.getCoordinates()\n .map(c => {\n const a = [c.x, c.y]\n if (c.z !== undefined && !Number.isNaN(c.z))\n a.push(c.z)\n if (c.m !== undefined && !Number.isNaN(c.m))\n a.push(c.m)\n return a\n })\n const array = []\n for (let i = 0, ii = coordinates.length; i < ii; ++i) \n array.push(coordinates[i].join(' '))\n return array.join(', ')\n}\n\n/**\n * @param {MultiLineString} geom MultiLineString geometry.\n * @return {string} Coordinates part of MultiLineString as WKT.\n */\nfunction encodeMultiLineStringGeometry(geom) {\n const array = []\n for (let i = 0, ii = geom.getNumGeometries(); i < ii; ++i) \n array.push('(' + encodeLineStringGeometry(geom.getGeometryN(i)) + ')')\n return array.join(', ')\n}\n\n/**\n * @param {Polygon} geom Polygon geometry.\n * @return {string} Coordinates part of Polygon as WKT.\n */\nfunction encodePolygonGeometry(geom) {\n const array = []\n array.push('(' + encodeLineStringGeometry(geom.getExteriorRing()) + ')')\n for (let i = 0, ii = geom.getNumInteriorRing(); i < ii; ++i) \n array.push('(' + encodeLineStringGeometry(geom.getInteriorRingN(i)) + ')')\n return array.join(', ')\n}\n\n/**\n * @param {MultiPolygon} geom MultiPolygon geometry.\n * @return {string} Coordinates part of MultiPolygon as WKT.\n */\nfunction encodeMultiPolygonGeometry(geom) {\n const array = []\n for (let i = 0, ii = geom.getNumGeometries(); i < ii; ++i) \n array.push('(' + encodePolygonGeometry(geom.getGeometryN(i)) + ')')\n return array.join(', ')\n}\n\n/**\n * @param {Geometry} geom Geometry geometry.\n * @return {string} Potential dimensional information for WKT type.\n */\nfunction encodeGeometryLayout(geom) {\n let dimInfo = ''\n if (geom.isEmpty())\n return dimInfo\n const c = geom.getCoordinate()\n if (c.z !== undefined && !Number.isNaN(c.z))\n dimInfo += Z\n if (c.m !== undefined && !Number.isNaN(c.m))\n dimInfo += M\n return dimInfo\n}\n\n/**\n * @const\n * @type {Object}\n */\nconst GeometryEncoder = {\n 'Point': encodePointGeometry,\n 'LineString': encodeLineStringGeometry,\n 'LinearRing': encodeLineStringGeometry,\n 'Polygon': encodePolygonGeometry,\n 'MultiPoint': encodeMultiPointGeometry,\n 'MultiLineString': encodeMultiLineStringGeometry,\n 'MultiPolygon': encodeMultiPolygonGeometry,\n 'GeometryCollection': encodeGeometryCollectionGeometry,\n}\n\n/**\n * Encode a geometry as WKT.\n * @param {!import(\"../geom/Geometry.js\").default} geom The geometry to encode.\n * @return {string} WKT string for the geometry.\n */\nfunction encode(geom) {\n let type = geom.getGeometryType()\n const geometryEncoder = GeometryEncoder[type]\n type = type.toUpperCase()\n const dimInfo = encodeGeometryLayout(geom)\n if (dimInfo.length > 0) \n type += ' ' + dimInfo\n if (geom.isEmpty()) \n return type + ' ' + EMPTY\n const enc = geometryEncoder(geom)\n return type + ' (' + enc + ')'\n}\n\n/**\n * Class for reading and writing Well-Known Text.\n *\n * NOTE: Adapted from OpenLayers.\n */\n\nexport default class WKTParser {\n /** Create a new parser for WKT\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of WKTParser.\n * @private\n */\n constructor(geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.precisionModel = this.geometryFactory.getPrecisionModel()\n }\n\n /**\n * Deserialize a WKT string and return a geometry. Supports WKT for POINT,\n * MULTIPOINT, LINESTRING, LINEARRING, MULTILINESTRING, POLYGON, MULTIPOLYGON,\n * and GEOMETRYCOLLECTION.\n *\n * @param {String} wkt A WKT string.\n * @return {Geometry} A geometry instance.\n * @private\n */\n read(wkt) {\n const lexer = new Lexer(wkt)\n const parser = new Parser(lexer, this.geometryFactory)\n const geometry = parser.parse()\n return geometry\n }\n\n /**\n * Serialize a geometry into a WKT string.\n *\n * @param {Geometry} geometry A feature or array of features.\n * @return {String} The WKT string representation of the input geometries.\n * @private\n */\n write(geometry) {\n return encode(geometry)\n }\n}\n","/**\n * @module org/locationtech/jts/io/WKTWriter\n */\n\nimport WKTParser from './WKTParser.js'\n\n/**\n * Writes the Well-Known Text representation of a {@link Geometry}. The\n * Well-Known Text format is defined in the OGC Simple Features\n * Specification for SQL.\n *

    \n * The WKTWriter outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *

    \n * The SFS WKT spec does not define a special tag for {@link LinearRing}s.\n * Under the spec, rings are output as LINESTRINGs.\n */\nexport default class WKTWriter {\n /**\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory)\n }\n\n /**\n * Converts a Geometry to its Well-known Text representation.\n *\n * @param {Geometry} geometry a Geometry to process.\n * @return {string} a string (see the OpenGIS Simple\n * Features Specification).\n * @memberof module:org/locationtech/jts/io/WKTWriter#\n */\n write(geometry) {\n return this.parser.write(geometry)\n }\n\n /**\n * Generates the WKT for a LINESTRING specified by two\n * {@link Coordinate}s.\n *\n * @param p0 the first coordinate.\n * @param p1 the second coordinate.\n *\n * @return the WKT.\n * @private\n */\n static toLineString(p0, p1) {\n if (arguments.length !== 2) throw new Error('Not implemented')\n\n return 'LINESTRING ( ' + p0.x + ' ' + p0.y + ', ' + p1.x + ' ' + p1.y + ' )'\n }\n}\n","import StringBuffer from '../../../../java/lang/StringBuffer.js'\nimport Double from '../../../../java/lang/Double.js'\nimport Integer from '../../../../java/lang/Integer.js'\nimport Character from '../../../../java/lang/Character.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport Cloneable from '../../../../java/lang/Cloneable.js'\nimport Serializable from '../../../../java/io/Serializable.js'\nimport IllegalStateException from '../../../../java/lang/IllegalStateException.js'\nexport default class DD {\n constructor() {\n DD.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hi = 0.0\n this._lo = 0.0\n if (arguments.length === 0) {\n this.init(0.0)\n } else if (arguments.length === 1) {\n if (typeof arguments[0] === 'number') {\n const x = arguments[0]\n this.init(x)\n } else if (arguments[0] instanceof DD) {\n const dd = arguments[0]\n this.init(dd)\n } else if (typeof arguments[0] === 'string') {\n const str = arguments[0]\n DD.constructor_.call(this, DD.parse(str))\n }\n } else if (arguments.length === 2) {\n const hi = arguments[0], lo = arguments[1]\n this.init(hi, lo)\n }\n }\n static determinant() {\n if (typeof arguments[3] === 'number' && (typeof arguments[2] === 'number' && (typeof arguments[0] === 'number' && typeof arguments[1] === 'number'))) {\n const x1 = arguments[0], y1 = arguments[1], x2 = arguments[2], y2 = arguments[3]\n return DD.determinant(DD.valueOf(x1), DD.valueOf(y1), DD.valueOf(x2), DD.valueOf(y2))\n } else if (arguments[3] instanceof DD && (arguments[2] instanceof DD && (arguments[0] instanceof DD && arguments[1] instanceof DD))) {\n const x1 = arguments[0], y1 = arguments[1], x2 = arguments[2], y2 = arguments[3]\n const det = x1.multiply(y2).selfSubtract(y1.multiply(x2))\n return det\n }\n }\n static sqr(x) {\n return DD.valueOf(x).selfMultiply(x)\n }\n static valueOf() {\n if (typeof arguments[0] === 'string') {\n const str = arguments[0]\n return DD.parse(str)\n } else if (typeof arguments[0] === 'number') {\n const x = arguments[0]\n return new DD(x)\n }\n }\n static sqrt(x) {\n return DD.valueOf(x).sqrt()\n }\n static parse(str) {\n let i = 0\n const strlen = str.length\n while (Character.isWhitespace(str.charAt(i))) i++\n let isNegative = false\n if (i < strlen) {\n const signCh = str.charAt(i)\n if (signCh === '-' || signCh === '+') {\n i++\n if (signCh === '-') isNegative = true\n }\n }\n const val = new DD()\n let numDigits = 0\n let numBeforeDec = 0\n let exp = 0\n let hasDecimalChar = false\n while (true) {\n if (i >= strlen) break\n const ch = str.charAt(i)\n i++\n if (Character.isDigit(ch)) {\n const d = ch - '0'\n val.selfMultiply(DD.TEN)\n val.selfAdd(d)\n numDigits++\n continue\n }\n if (ch === '.') {\n numBeforeDec = numDigits\n hasDecimalChar = true\n continue\n }\n if (ch === 'e' || ch === 'E') {\n const expStr = str.substring(i)\n try {\n exp = Integer.parseInt(expStr)\n } catch (ex) {\n if (ex instanceof NumberFormatException) \n throw new NumberFormatException('Invalid exponent ' + expStr + ' in string ' + str)\n else throw ex\n } finally {}\n break\n }\n throw new NumberFormatException('Unexpected character \\'' + ch + '\\' at position ' + i + ' in string ' + str)\n }\n let val2 = val\n if (!hasDecimalChar) numBeforeDec = numDigits\n const numDecPlaces = numDigits - numBeforeDec - exp\n if (numDecPlaces === 0) {\n val2 = val\n } else if (numDecPlaces > 0) {\n const scale = DD.TEN.pow(numDecPlaces)\n val2 = val.divide(scale)\n } else if (numDecPlaces < 0) {\n const scale = DD.TEN.pow(-numDecPlaces)\n val2 = val.multiply(scale)\n }\n if (isNegative) \n return val2.negate()\n \n return val2\n }\n static createNaN() {\n return new DD(Double.NaN, Double.NaN)\n }\n static copy(dd) {\n return new DD(dd)\n }\n static magnitude(x) {\n const xAbs = Math.abs(x)\n const xLog10 = Math.log(xAbs) / Math.log(10)\n let xMag = Math.trunc(Math.floor(xLog10))\n const xApprox = Math.pow(10, xMag)\n if (xApprox * 10 <= xAbs) xMag += 1\n return xMag\n }\n static stringOfChar(ch, len) {\n const buf = new StringBuffer()\n for (let i = 0; i < len; i++) \n buf.append(ch)\n \n return buf.toString()\n }\n le(y) {\n return this._hi < y._hi || this._hi === y._hi && this._lo <= y._lo\n }\n extractSignificantDigits(insertDecimalPoint, magnitude) {\n let y = this.abs()\n let mag = DD.magnitude(y._hi)\n const scale = DD.TEN.pow(mag)\n y = y.divide(scale)\n if (y.gt(DD.TEN)) {\n y = y.divide(DD.TEN)\n mag += 1\n } else if (y.lt(DD.ONE)) {\n y = y.multiply(DD.TEN)\n mag -= 1\n }\n const decimalPointPos = mag + 1\n const buf = new StringBuffer()\n const numDigits = DD.MAX_PRINT_DIGITS - 1\n for (let i = 0; i <= numDigits; i++) {\n if (insertDecimalPoint && i === decimalPointPos) \n buf.append('.')\n \n const digit = Math.trunc(y._hi)\n if (digit < 0 || digit > 9) {}\n if (digit < 0) \n break\n \n let rebiasBy10 = false\n let digitChar = 0\n if (digit > 9) {\n rebiasBy10 = true\n digitChar = '9'\n } else {\n digitChar = '0' + digit\n }\n buf.append(digitChar)\n y = y.subtract(DD.valueOf(digit)).multiply(DD.TEN)\n if (rebiasBy10) y.selfAdd(DD.TEN)\n let continueExtractingDigits = true\n const remMag = DD.magnitude(y._hi)\n if (remMag < 0 && Math.abs(remMag) >= numDigits - i) continueExtractingDigits = false\n if (!continueExtractingDigits) break\n }\n magnitude[0] = mag\n return buf.toString()\n }\n sqr() {\n return this.multiply(this)\n }\n getSpecialNumberString() {\n if (this.isZero()) return '0.0'\n if (this.isNaN()) return 'NaN '\n return null\n }\n setValue() {\n if (arguments[0] instanceof DD) {\n const value = arguments[0]\n this.init(value)\n return this\n } else if (typeof arguments[0] === 'number') {\n const value = arguments[0]\n this.init(value)\n return this\n }\n }\n multiply() {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n if (y.isNaN()) return DD.createNaN()\n return DD.copy(this).selfMultiply(y)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n if (Double.isNaN(y)) return DD.createNaN()\n return DD.copy(this).selfMultiply(y, 0.0)\n }\n }\n isNaN() {\n return Double.isNaN(this._hi)\n }\n reciprocal() {\n let hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null\n C = 1.0 / this._hi\n c = DD.SPLIT * C\n hc = c - C\n u = DD.SPLIT * this._hi\n hc = c - hc\n tc = C - hc\n hy = u - this._hi\n U = C * this._hi\n hy = u - hy\n ty = this._hi - hy\n u = hc * hy - U + hc * ty + tc * hy + tc * ty\n c = (1.0 - U - u - C * this._lo) / this._hi\n const zhi = C + c\n const zlo = C - zhi + c\n return new DD(zhi, zlo)\n }\n doubleValue() {\n return this._hi + this._lo\n }\n subtract() {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.add(y.negate())\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return this.add(-y)\n }\n }\n equals() {\n if (arguments.length === 1 && arguments[0] instanceof DD) {\n const y = arguments[0]\n return this._hi === y._hi && this._lo === y._lo\n }\n }\n isZero() {\n return this._hi === 0.0 && this._lo === 0.0\n }\n selfSubtract() {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n if (this.isNaN()) return this\n return this.selfAdd(-y._hi, -y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n if (this.isNaN()) return this\n return this.selfAdd(-y, 0.0)\n }\n }\n min(x) {\n if (this.le(x)) \n return this\n else \n return x\n \n }\n selfDivide() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.selfDivide(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return this.selfDivide(y, 0.0)\n }\n } else if (arguments.length === 2) {\n const yhi = arguments[0], ylo = arguments[1]\n let hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null\n C = this._hi / yhi\n c = DD.SPLIT * C\n hc = c - C\n u = DD.SPLIT * yhi\n hc = c - hc\n tc = C - hc\n hy = u - yhi\n U = C * yhi\n hy = u - hy\n ty = yhi - hy\n u = hc * hy - U + hc * ty + tc * hy + tc * ty\n c = (this._hi - U - u + this._lo - C * ylo) / yhi\n u = C + c\n this._hi = u\n this._lo = C - u + c\n return this\n }\n }\n dump() {\n return 'DD<' + this._hi + ', ' + this._lo + '>'\n }\n divide() {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n let hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null\n C = this._hi / y._hi\n c = DD.SPLIT * C\n hc = c - C\n u = DD.SPLIT * y._hi\n hc = c - hc\n tc = C - hc\n hy = u - y._hi\n U = C * y._hi\n hy = u - hy\n ty = y._hi - hy\n u = hc * hy - U + hc * ty + tc * hy + tc * ty\n c = (this._hi - U - u + this._lo - C * y._lo) / y._hi\n u = C + c\n const zhi = u\n const zlo = C - u + c\n return new DD(zhi, zlo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n if (Double.isNaN(y)) return DD.createNaN()\n return DD.copy(this).selfDivide(y, 0.0)\n }\n }\n ge(y) {\n return this._hi > y._hi || this._hi === y._hi && this._lo >= y._lo\n }\n pow(exp) {\n if (exp === 0.0) return DD.valueOf(1.0)\n let r = new DD(this)\n let s = DD.valueOf(1.0)\n let n = Math.abs(exp)\n if (n > 1) \n while (n > 0) {\n if (n % 2 === 1) \n s.selfMultiply(r)\n \n n /= 2\n if (n > 0) r = r.sqr()\n }\n else \n s = r\n \n if (exp < 0) return s.reciprocal()\n return s\n }\n ceil() {\n if (this.isNaN()) return DD.NaN\n const fhi = Math.ceil(this._hi)\n let flo = 0.0\n if (fhi === this._hi) \n flo = Math.ceil(this._lo)\n \n return new DD(fhi, flo)\n }\n compareTo(o) {\n const other = o\n if (this._hi < other._hi) return -1\n if (this._hi > other._hi) return 1\n if (this._lo < other._lo) return -1\n if (this._lo > other._lo) return 1\n return 0\n }\n rint() {\n if (this.isNaN()) return this\n const plus5 = this.add(0.5)\n return plus5.floor()\n }\n max(x) {\n if (this.ge(x)) \n return this\n else \n return x\n \n }\n sqrt() {\n if (this.isZero()) return DD.valueOf(0.0)\n if (this.isNegative()) \n return DD.NaN\n \n const x = 1.0 / Math.sqrt(this._hi)\n const ax = this._hi * x\n const axdd = DD.valueOf(ax)\n const diffSq = this.subtract(axdd.sqr())\n const d2 = diffSq._hi * (x * 0.5)\n return axdd.add(d2)\n }\n selfAdd() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.selfAdd(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n let H = null, h = null, S = null, s = null, e = null, f = null\n S = this._hi + y\n e = S - this._hi\n s = S - e\n s = y - e + (this._hi - s)\n f = s + this._lo\n H = S + f\n h = f + (S - H)\n this._hi = H + h\n this._lo = h + (H - this._hi)\n return this\n }\n } else if (arguments.length === 2) {\n const yhi = arguments[0], ylo = arguments[1]\n let H = null, h = null, T = null, t = null, S = null, s = null, e = null, f = null\n S = this._hi + yhi\n T = this._lo + ylo\n e = S - this._hi\n f = T - this._lo\n s = S - e\n t = T - f\n s = yhi - e + (this._hi - s)\n t = ylo - f + (this._lo - t)\n e = s + T\n H = S + e\n h = e + (S - H)\n e = t + h\n const zhi = H + e\n const zlo = e + (H - zhi)\n this._hi = zhi\n this._lo = zlo\n return this\n }\n }\n selfMultiply() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.selfMultiply(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return this.selfMultiply(y, 0.0)\n }\n } else if (arguments.length === 2) {\n const yhi = arguments[0], ylo = arguments[1]\n let hx = null, tx = null, hy = null, ty = null, C = null, c = null\n C = DD.SPLIT * this._hi\n hx = C - this._hi\n c = DD.SPLIT * yhi\n hx = C - hx\n tx = this._hi - hx\n hy = c - yhi\n C = this._hi * yhi\n hy = c - hy\n ty = yhi - hy\n c = hx * hy - C + hx * ty + tx * hy + tx * ty + (this._hi * ylo + this._lo * yhi)\n const zhi = C + c\n hx = C - zhi\n const zlo = c + hx\n this._hi = zhi\n this._lo = zlo\n return this\n }\n }\n selfSqr() {\n return this.selfMultiply(this)\n }\n floor() {\n if (this.isNaN()) return DD.NaN\n const fhi = Math.floor(this._hi)\n let flo = 0.0\n if (fhi === this._hi) \n flo = Math.floor(this._lo)\n \n return new DD(fhi, flo)\n }\n negate() {\n if (this.isNaN()) return this\n return new DD(-this._hi, -this._lo)\n }\n clone() {\n try {\n return null\n } catch (ex) {\n if (ex instanceof CloneNotSupportedException) \n return null\n else throw ex\n } finally {}\n }\n intValue() {\n return Math.trunc(this._hi)\n }\n toString() {\n const mag = DD.magnitude(this._hi)\n if (mag >= -3 && mag <= 20) return this.toStandardNotation()\n return this.toSciNotation()\n }\n toStandardNotation() {\n const specialStr = this.getSpecialNumberString()\n if (specialStr !== null) return specialStr\n const magnitude = new Array(1).fill(null)\n const sigDigits = this.extractSignificantDigits(true, magnitude)\n const decimalPointPos = magnitude[0] + 1\n let num = sigDigits\n if (sigDigits.charAt(0) === '.') {\n num = '0' + sigDigits\n } else if (decimalPointPos < 0) {\n num = '0.' + DD.stringOfChar('0', -decimalPointPos) + sigDigits\n } else if (sigDigits.indexOf('.') === -1) {\n const numZeroes = decimalPointPos - sigDigits.length\n const zeroes = DD.stringOfChar('0', numZeroes)\n num = sigDigits + zeroes + '.0'\n }\n if (this.isNegative()) return '-' + num\n return num\n }\n toSciNotation() {\n if (this.isZero()) return DD.SCI_NOT_ZERO\n const specialStr = this.getSpecialNumberString()\n if (specialStr !== null) return specialStr\n const magnitude = new Array(1).fill(null)\n const digits = this.extractSignificantDigits(false, magnitude)\n const expStr = DD.SCI_NOT_EXPONENT_CHAR + magnitude[0]\n if (digits.charAt(0) === '0') \n throw new IllegalStateException('Found leading zero: ' + digits)\n \n let trailingDigits = ''\n if (digits.length > 1) trailingDigits = digits.substring(1)\n const digitsWithDecimal = digits.charAt(0) + '.' + trailingDigits\n if (this.isNegative()) return '-' + digitsWithDecimal + expStr\n return digitsWithDecimal + expStr\n }\n abs() {\n if (this.isNaN()) return DD.NaN\n if (this.isNegative()) return this.negate()\n return new DD(this)\n }\n isPositive() {\n return this._hi > 0.0 || this._hi === 0.0 && this._lo > 0.0\n }\n lt(y) {\n return this._hi < y._hi || this._hi === y._hi && this._lo < y._lo\n }\n add() {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return DD.copy(this).selfAdd(y)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return DD.copy(this).selfAdd(y)\n }\n }\n init() {\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'number') {\n const x = arguments[0]\n this._hi = x\n this._lo = 0.0\n } else if (arguments[0] instanceof DD) {\n const dd = arguments[0]\n this._hi = dd._hi\n this._lo = dd._lo\n }\n } else if (arguments.length === 2) {\n const hi = arguments[0], lo = arguments[1]\n this._hi = hi\n this._lo = lo\n }\n }\n gt(y) {\n return this._hi > y._hi || this._hi === y._hi && this._lo > y._lo\n }\n isNegative() {\n return this._hi < 0.0 || this._hi === 0.0 && this._lo < 0.0\n }\n trunc() {\n if (this.isNaN()) return DD.NaN\n if (this.isPositive()) return this.floor(); else return this.ceil()\n }\n signum() {\n if (this._hi > 0) return 1\n if (this._hi < 0) return -1\n if (this._lo > 0) return 1\n if (this._lo < 0) return -1\n return 0\n }\n get interfaces_() {\n return [Serializable, Comparable, Cloneable]\n }\n}\nDD.PI = new DD(3.141592653589793116e+00, 1.224646799147353207e-16)\nDD.TWO_PI = new DD(6.283185307179586232e+00, 2.449293598294706414e-16)\nDD.PI_2 = new DD(1.570796326794896558e+00, 6.123233995736766036e-17)\nDD.E = new DD(2.718281828459045091e+00, 1.445646891729250158e-16)\nDD.NaN = new DD(Double.NaN, Double.NaN)\nDD.EPS = 1.23259516440783e-32\nDD.SPLIT = 134217729.0\nDD.MAX_PRINT_DIGITS = 32\nDD.TEN = DD.valueOf(10.0)\nDD.ONE = DD.valueOf(1.0)\nDD.SCI_NOT_EXPONENT_CHAR = 'E'\nDD.SCI_NOT_ZERO = '0.0E0'\n","import Double from '../../../../java/lang/Double.js'\nexport default class MathUtil {\n static log10(x) {\n const ln = Math.log(x)\n if (Double.isInfinite(ln)) return ln\n if (Double.isNaN(ln)) return ln\n return ln / MathUtil.LOG_10\n }\n static min(v1, v2, v3, v4) {\n let min = v1\n if (v2 < min) min = v2\n if (v3 < min) min = v3\n if (v4 < min) min = v4\n return min\n }\n static clamp() {\n if (typeof arguments[2] === 'number' && (typeof arguments[0] === 'number' && typeof arguments[1] === 'number')) {\n const x = arguments[0], min = arguments[1], max = arguments[2]\n if (x < min) return min\n if (x > max) return max\n return x\n } else if (Number.isInteger(arguments[2]) && (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1]))) {\n const x = arguments[0], min = arguments[1], max = arguments[2]\n if (x < min) return min\n if (x > max) return max\n return x\n }\n }\n static average(x1, x2) {\n return (x1 + x2) / 2.0\n }\n static wrap(index, max) {\n if (index < 0) \n return max - -index % max\n \n return index % max\n }\n static max() {\n if (arguments.length === 3) {\n const v1 = arguments[0], v2 = arguments[1], v3 = arguments[2]\n let max = v1\n if (v2 > max) max = v2\n if (v3 > max) max = v3\n return max\n } else if (arguments.length === 4) {\n const v1 = arguments[0], v2 = arguments[1], v3 = arguments[2], v4 = arguments[3]\n let max = v1\n if (v2 > max) max = v2\n if (v3 > max) max = v3\n if (v4 > max) max = v4\n return max\n }\n }\n}\nMathUtil.LOG_10 = Math.log(10)\n","export default class BufferParameters {\n constructor() {\n BufferParameters.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n this._endCapStyle = BufferParameters.CAP_ROUND\n this._joinStyle = BufferParameters.JOIN_ROUND\n this._mitreLimit = BufferParameters.DEFAULT_MITRE_LIMIT\n this._isSingleSided = false\n this._simplifyFactor = BufferParameters.DEFAULT_SIMPLIFY_FACTOR\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const quadrantSegments = arguments[0]\n this.setQuadrantSegments(quadrantSegments)\n } else if (arguments.length === 2) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n } else if (arguments.length === 4) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1], joinStyle = arguments[2], mitreLimit = arguments[3]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n this.setJoinStyle(joinStyle)\n this.setMitreLimit(mitreLimit)\n }\n }\n static bufferDistanceError(quadSegs) {\n const alpha = Math.PI / 2.0 / quadSegs\n return 1 - Math.cos(alpha / 2.0)\n }\n getEndCapStyle() {\n return this._endCapStyle\n }\n isSingleSided() {\n return this._isSingleSided\n }\n setQuadrantSegments(quadSegs) {\n this._quadrantSegments = quadSegs\n if (this._quadrantSegments === 0) this._joinStyle = BufferParameters.JOIN_BEVEL\n if (this._quadrantSegments < 0) {\n this._joinStyle = BufferParameters.JOIN_MITRE\n this._mitreLimit = Math.abs(this._quadrantSegments)\n }\n if (quadSegs <= 0) \n this._quadrantSegments = 1\n \n if (this._joinStyle !== BufferParameters.JOIN_ROUND) \n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n \n }\n getJoinStyle() {\n return this._joinStyle\n }\n setJoinStyle(joinStyle) {\n this._joinStyle = joinStyle\n }\n setSimplifyFactor(simplifyFactor) {\n this._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor\n }\n getSimplifyFactor() {\n return this._simplifyFactor\n }\n getQuadrantSegments() {\n return this._quadrantSegments\n }\n setEndCapStyle(endCapStyle) {\n this._endCapStyle = endCapStyle\n }\n getMitreLimit() {\n return this._mitreLimit\n }\n setMitreLimit(mitreLimit) {\n this._mitreLimit = mitreLimit\n }\n setSingleSided(isSingleSided) {\n this._isSingleSided = isSingleSided\n }\n}\nBufferParameters.CAP_ROUND = 1\nBufferParameters.CAP_FLAT = 2\nBufferParameters.CAP_SQUARE = 3\nBufferParameters.JOIN_ROUND = 1\nBufferParameters.JOIN_MITRE = 2\nBufferParameters.JOIN_BEVEL = 3\nBufferParameters.DEFAULT_QUADRANT_SEGMENTS = 8\nBufferParameters.DEFAULT_MITRE_LIMIT = 5.0\nBufferParameters.DEFAULT_SIMPLIFY_FACTOR = 0.01\n","import Assert from '../util/Assert.js'\nexport default class SegmentPointComparator {\n static relativeSign(x0, x1) {\n if (x0 < x1) return -1\n if (x0 > x1) return 1\n return 0\n }\n static compareValue(compareSign0, compareSign1) {\n if (compareSign0 < 0) return -1\n if (compareSign0 > 0) return 1\n if (compareSign1 < 0) return -1\n if (compareSign1 > 0) return 1\n return 0\n }\n static compare(octant, p0, p1) {\n if (p0.equals2D(p1)) return 0\n const xSign = SegmentPointComparator.relativeSign(p0.x, p1.x)\n const ySign = SegmentPointComparator.relativeSign(p0.y, p1.y)\n switch (octant) {\n case 0:\n return SegmentPointComparator.compareValue(xSign, ySign)\n case 1:\n return SegmentPointComparator.compareValue(ySign, xSign)\n case 2:\n return SegmentPointComparator.compareValue(ySign, -xSign)\n case 3:\n return SegmentPointComparator.compareValue(-xSign, ySign)\n case 4:\n return SegmentPointComparator.compareValue(-xSign, -ySign)\n case 5:\n return SegmentPointComparator.compareValue(-ySign, -xSign)\n case 6:\n return SegmentPointComparator.compareValue(-ySign, xSign)\n case 7:\n return SegmentPointComparator.compareValue(xSign, -ySign)\n }\n Assert.shouldNeverReachHere('invalid octant value')\n return 0\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport SegmentPointComparator from './SegmentPointComparator.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nexport default class SegmentNode {\n constructor() {\n SegmentNode.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._segString = null\n this.coord = null\n this.segmentIndex = null\n this._segmentOctant = null\n this._isInterior = null\n const segString = arguments[0], coord = arguments[1], segmentIndex = arguments[2], segmentOctant = arguments[3]\n this._segString = segString\n this.coord = new Coordinate(coord)\n this.segmentIndex = segmentIndex\n this._segmentOctant = segmentOctant\n this._isInterior = !coord.equals2D(segString.getCoordinate(segmentIndex))\n }\n getCoordinate() {\n return this.coord\n }\n print(out) {\n out.print(this.coord)\n out.print(' seg # = ' + this.segmentIndex)\n }\n compareTo(obj) {\n const other = obj\n if (this.segmentIndex < other.segmentIndex) return -1\n if (this.segmentIndex > other.segmentIndex) return 1\n if (this.coord.equals2D(other.coord)) return 0\n if (!this._isInterior) return -1\n if (!other._isInterior) return 1\n return SegmentPointComparator.compare(this._segmentOctant, this.coord, other.coord)\n }\n isEndPoint(maxSegmentIndex) {\n if (this.segmentIndex === 0 && !this._isInterior) return true\n if (this.segmentIndex === maxSegmentIndex) return true\n return false\n }\n toString() {\n return this.segmentIndex + ':' + this.coord.toString()\n }\n isInterior() {\n return this._isInterior\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import Map from './Map.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedMap.html\n */\nexport default class SortedMap extends Map {}\n","import ArrayList from './ArrayList.js'\nimport SortedMap from './SortedMap.js'\nimport HashSet from './HashSet.js'\n\nconst BLACK = 0\nconst RED = 1\n\nfunction colorOf(p) {\n return (p == null ? BLACK : p.color)\n}\nfunction parentOf(p) {\n return (p == null ? null : p.parent)\n}\nfunction setColor(p, c) {\n if (p !== null) p.color = c\n}\nfunction leftOf(p) {\n return (p == null ? null : p.left)\n}\nfunction rightOf(p) {\n return (p == null ? null : p.right)\n}\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html\n */\nexport default class TreeMap extends SortedMap {\n constructor() {\n super()\n this.root_ = null\n this.size_ = 0\n }\n\n get(key) {\n let p = this.root_\n while (p !== null) {\n const cmp = key.compareTo(p.key)\n if (cmp < 0)\n p = p.left\n else if (cmp > 0)\n p = p.right\n else return p.value\n }\n return null\n }\n\n put(key, value) {\n if (this.root_ === null) {\n this.root_ = {\n key: key,\n value: value,\n left: null,\n right: null,\n parent: null,\n color: BLACK,\n getValue() {\n return this.value\n },\n getKey() {\n return this.key\n }\n }\n this.size_ = 1\n return null\n }\n let t = this.root_; let parent; let cmp\n do {\n parent = t\n cmp = key.compareTo(t.key)\n if (cmp < 0) {\n t = t.left\n } else if (cmp > 0) {\n t = t.right\n } else {\n const oldValue = t.value\n t.value = value\n return oldValue\n }\n } while (t !== null)\n const e = {\n key: key,\n left: null,\n right: null,\n value: value,\n parent: parent,\n color: BLACK,\n getValue() {\n return this.value\n },\n getKey() {\n return this.key\n }\n }\n if (cmp < 0)\n parent.left = e\n else parent.right = e\n\n this.fixAfterInsertion(e)\n this.size_++\n return null\n }\n\n /**\n * @param {Object} x\n */\n fixAfterInsertion(x) {\n let y\n x.color = RED\n while (x != null && x !== this.root_ && x.parent.color === RED)\n if (parentOf(x) === leftOf(parentOf(parentOf(x)))) {\n y = rightOf(parentOf(parentOf(x)))\n if (colorOf(y) === RED) {\n setColor(parentOf(x), BLACK)\n setColor(y, BLACK)\n setColor(parentOf(parentOf(x)), RED)\n x = parentOf(parentOf(x))\n } else {\n if (x === rightOf(parentOf(x))) {\n x = parentOf(x)\n this.rotateLeft(x)\n }\n setColor(parentOf(x), BLACK)\n setColor(parentOf(parentOf(x)), RED)\n this.rotateRight(parentOf(parentOf(x)))\n }\n } else {\n y = leftOf(parentOf(parentOf(x)))\n if (colorOf(y) === RED) {\n setColor(parentOf(x), BLACK)\n setColor(y, BLACK)\n setColor(parentOf(parentOf(x)), RED)\n x = parentOf(parentOf(x))\n } else {\n if (x === leftOf(parentOf(x))) {\n x = parentOf(x)\n this.rotateRight(x)\n }\n setColor(parentOf(x), BLACK)\n setColor(parentOf(parentOf(x)), RED)\n this.rotateLeft(parentOf(parentOf(x)))\n }\n }\n\n this.root_.color = BLACK\n }\n\n values() {\n const arrayList = new ArrayList()\n let p = this.getFirstEntry()\n if (p !== null) {\n arrayList.add(p.value)\n while ((p = TreeMap.successor(p)) !== null)\n arrayList.add(p.value)\n }\n return arrayList\n }\n\n entrySet() {\n const hashSet = new HashSet()\n let p = this.getFirstEntry()\n if (p !== null) {\n hashSet.add(p)\n while ((p = TreeMap.successor(p)) !== null)\n hashSet.add(p)\n }\n return hashSet\n }\n\n /**\n * @param {Object} p\n */\n rotateLeft(p) {\n if (p != null) {\n const r = p.right\n p.right = r.left\n if (r.left != null)\n r.left.parent = p\n r.parent = p.parent\n if (p.parent == null)\n this.root_ = r\n else if (p.parent.left === p)\n p.parent.left = r\n else\n p.parent.right = r\n r.left = p\n p.parent = r\n }\n }\n\n /**\n * @param {Object} p\n */\n rotateRight(p) {\n if (p != null) {\n const l = p.left\n p.left = l.right\n if (l.right != null)\n l.right.parent = p\n l.parent = p.parent\n if (p.parent == null)\n this.root_ = l\n else if (p.parent.right === p)\n p.parent.right = l\n else\n p.parent.left = l\n l.right = p\n p.parent = l\n }\n }\n\n /**\n * @return {Object}\n */\n getFirstEntry() {\n let p = this.root_\n if (p != null)\n while (p.left != null) p = p.left\n return p\n }\n\n /**\n * @param {Object} t\n * @return {Object}\n * @private\n */\n static successor(t) {\n let p\n if (t === null) {\n return null\n } else if (t.right !== null) {\n p = t.right\n while (p.left !== null)\n p = p.left\n return p\n } else {\n p = t.parent\n let ch = t\n while (p !== null && ch === p.right) {\n ch = p\n p = p.parent\n }\n return p\n }\n }\n\n size() {\n return this.size_\n }\n\n containsKey(key) {\n let p = this.root_\n while (p !== null) {\n const cmp = key.compareTo(p.key)\n if (cmp < 0)\n p = p.left\n else if (cmp > 0)\n p = p.right\n else return true\n }\n return false\n }\n}\n","import CoordinateList from '../geom/CoordinateList.js'\nimport SegmentNode from './SegmentNode.js'\nimport Iterator from '../../../../java/util/Iterator.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport NodedSegmentString from './NodedSegmentString.js'\nimport Integer from '../../../../java/lang/Integer.js'\nimport UnsupportedOperationException from '../../../../java/lang/UnsupportedOperationException.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport TreeMap from '../../../../java/util/TreeMap.js'\nimport RuntimeException from '../../../../java/lang/RuntimeException.js'\nimport Assert from '../util/Assert.js'\nexport default class SegmentNodeList {\n constructor() {\n SegmentNodeList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeMap = new TreeMap()\n this._edge = null\n const edge = arguments[0]\n this._edge = edge\n }\n getSplitCoordinates() {\n const coordList = new CoordinateList()\n this.addEndpoints()\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n this.addEdgeCoordinates(eiPrev, ei, coordList)\n eiPrev = ei\n }\n return coordList.toCoordinateArray()\n }\n print(out) {\n out.println('Intersections:')\n for (let it = this.iterator(); it.hasNext(); ) {\n const ei = it.next()\n ei.print(out)\n }\n }\n findCollapsesFromExistingVertices(collapsedVertexIndexes) {\n for (let i = 0; i < this._edge.size() - 2; i++) {\n const p0 = this._edge.getCoordinate(i)\n const p1 = this._edge.getCoordinate(i + 1)\n const p2 = this._edge.getCoordinate(i + 2)\n if (p0.equals2D(p2)) \n collapsedVertexIndexes.add(Integer.valueOf(i + 1))\n \n }\n }\n addEdgeCoordinates(ei0, ei1, coordList) {\n const pts = this.createSplitEdgePts(ei0, ei1)\n coordList.add(pts, false)\n }\n findCollapseIndex(ei0, ei1, collapsedVertexIndex) {\n if (!ei0.coord.equals2D(ei1.coord)) return false\n let numVerticesBetween = ei1.segmentIndex - ei0.segmentIndex\n if (!ei1.isInterior()) \n numVerticesBetween--\n \n if (numVerticesBetween === 1) {\n collapsedVertexIndex[0] = ei0.segmentIndex + 1\n return true\n }\n return false\n }\n findCollapsesFromInsertedNodes(collapsedVertexIndexes) {\n const collapsedVertexIndex = new Array(1).fill(null)\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n const isCollapsed = this.findCollapseIndex(eiPrev, ei, collapsedVertexIndex)\n if (isCollapsed) collapsedVertexIndexes.add(Integer.valueOf(collapsedVertexIndex[0]))\n eiPrev = ei\n }\n }\n getEdge() {\n return this._edge\n }\n addEndpoints() {\n const maxSegIndex = this._edge.size() - 1\n this.add(this._edge.getCoordinate(0), 0)\n this.add(this._edge.getCoordinate(maxSegIndex), maxSegIndex)\n }\n createSplitEdge(ei0, ei1) {\n const pts = this.createSplitEdgePts(ei0, ei1)\n return new NodedSegmentString(pts, this._edge.getData())\n }\n add(intPt, segmentIndex) {\n const eiNew = new SegmentNode(this._edge, intPt, segmentIndex, this._edge.getSegmentOctant(segmentIndex))\n const ei = this._nodeMap.get(eiNew)\n if (ei !== null) {\n Assert.isTrue(ei.coord.equals2D(intPt), 'Found equal nodes with different coordinates')\n return ei\n }\n this._nodeMap.put(eiNew, eiNew)\n return eiNew\n }\n checkSplitEdgesCorrectness(splitEdges) {\n const edgePts = this._edge.getCoordinates()\n const split0 = splitEdges.get(0)\n const pt0 = split0.getCoordinate(0)\n if (!pt0.equals2D(edgePts[0])) throw new RuntimeException('bad split edge start point at ' + pt0)\n const splitn = splitEdges.get(splitEdges.size() - 1)\n const splitnPts = splitn.getCoordinates()\n const ptn = splitnPts[splitnPts.length - 1]\n if (!ptn.equals2D(edgePts[edgePts.length - 1])) throw new RuntimeException('bad split edge end point at ' + ptn)\n }\n addCollapsedNodes() {\n const collapsedVertexIndexes = new ArrayList()\n this.findCollapsesFromInsertedNodes(collapsedVertexIndexes)\n this.findCollapsesFromExistingVertices(collapsedVertexIndexes)\n for (let it = collapsedVertexIndexes.iterator(); it.hasNext(); ) {\n const vertexIndex = it.next().intValue()\n this.add(this._edge.getCoordinate(vertexIndex), vertexIndex)\n }\n }\n createSplitEdgePts(ei0, ei1) {\n let npts = ei1.segmentIndex - ei0.segmentIndex + 2\n if (npts === 2) return [new Coordinate(ei0.coord), new Coordinate(ei1.coord)]\n const lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex)\n const useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt)\n if (!useIntPt1) \n npts--\n \n const pts = new Array(npts).fill(null)\n let ipt = 0\n pts[ipt++] = new Coordinate(ei0.coord)\n for (let i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) \n pts[ipt++] = this._edge.getCoordinate(i)\n \n if (useIntPt1) pts[ipt] = new Coordinate(ei1.coord)\n return pts\n }\n iterator() {\n return this._nodeMap.values().iterator()\n }\n addSplitEdges(edgeList) {\n this.addEndpoints()\n this.addCollapsedNodes()\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n const newEdge = this.createSplitEdge(eiPrev, ei)\n edgeList.add(newEdge)\n eiPrev = ei\n }\n }\n}\nclass NodeVertexIterator {\n constructor() {\n NodeVertexIterator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeList = null\n this._edge = null\n this._nodeIt = null\n this._currNode = null\n this._nextNode = null\n this._currSegIndex = 0\n const nodeList = arguments[0]\n this._nodeList = nodeList\n this._edge = nodeList.getEdge()\n this._nodeIt = nodeList.iterator()\n this.readNextNode()\n }\n next() {\n if (this._currNode === null) {\n this._currNode = this._nextNode\n this._currSegIndex = this._currNode.segmentIndex\n this.readNextNode()\n return this._currNode\n }\n if (this._nextNode === null) return null\n if (this._nextNode.segmentIndex === this._currNode.segmentIndex) {\n this._currNode = this._nextNode\n this._currSegIndex = this._currNode.segmentIndex\n this.readNextNode()\n return this._currNode\n }\n if (this._nextNode.segmentIndex > this._currNode.segmentIndex) {}\n return null\n }\n readNextNode() {\n if (this._nodeIt.hasNext()) this._nextNode = this._nodeIt.next(); else this._nextNode = null\n }\n hasNext() {\n if (this._nextNode === null) return false\n return true\n }\n remove() {\n throw new UnsupportedOperationException(this.getClass().getName())\n }\n get interfaces_() {\n return [Iterator]\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nexport default class Octant {\n static octant() {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const dx = arguments[0], dy = arguments[1]\n if (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException('Cannot compute the octant for point ( ' + dx + ', ' + dy + ' )')\n const adx = Math.abs(dx)\n const ady = Math.abs(dy)\n if (dx >= 0) \n if (dy >= 0) \n if (adx >= ady) return 0; else return 1\n else \n if (adx >= ady) return 7; else return 6\n \n else \n if (dy >= 0) \n if (adx >= ady) return 3; else return 2\n else \n if (adx >= ady) return 4; else return 5\n \n \n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const p0 = arguments[0], p1 = arguments[1]\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n if (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException('Cannot compute the octant for two identical points ' + p0)\n return Octant.octant(dx, dy)\n }\n }\n}\n","export default class SegmentString {\n getCoordinates() {}\n size() {}\n getCoordinate(i) {}\n isClosed() {}\n setData(data) {}\n getData() {}\n}\n","import SegmentString from './SegmentString.js'\nexport default class NodableSegmentString {\n addIntersection(intPt, segmentIndex) {}\n get interfaces_() {\n return [SegmentString]\n }\n}\n","import SegmentNodeList from './SegmentNodeList.js'\nimport WKTWriter from '../io/WKTWriter.js'\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Octant from './Octant.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport NodableSegmentString from './NodableSegmentString.js'\nexport default class NodedSegmentString {\n constructor() {\n NodedSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeList = new SegmentNodeList(this)\n this._pts = null\n this._data = null\n const pts = arguments[0], data = arguments[1]\n this._pts = pts\n this._data = data\n }\n static getNodedSubstrings() {\n if (arguments.length === 1) {\n const segStrings = arguments[0]\n const resultEdgelist = new ArrayList()\n NodedSegmentString.getNodedSubstrings(segStrings, resultEdgelist)\n return resultEdgelist\n } else if (arguments.length === 2) {\n const segStrings = arguments[0], resultEdgelist = arguments[1]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n ss.getNodeList().addSplitEdges(resultEdgelist)\n }\n }\n }\n getCoordinates() {\n return this._pts\n }\n size() {\n return this._pts.length\n }\n getCoordinate(i) {\n return this._pts[i]\n }\n isClosed() {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n }\n getSegmentOctant(index) {\n if (index === this._pts.length - 1) return -1\n return this.safeOctant(this.getCoordinate(index), this.getCoordinate(index + 1))\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n }\n getNodeList() {\n return this._nodeList\n }\n addIntersectionNode(intPt, segmentIndex) {\n let normalizedSegmentIndex = segmentIndex\n const nextSegIndex = normalizedSegmentIndex + 1\n if (nextSegIndex < this._pts.length) {\n const nextPt = this._pts[nextSegIndex]\n if (intPt.equals2D(nextPt)) \n normalizedSegmentIndex = nextSegIndex\n \n }\n const ei = this._nodeList.add(intPt, normalizedSegmentIndex)\n return ei\n }\n addIntersections(li, segmentIndex, geomIndex) {\n for (let i = 0; i < li.getIntersectionNum(); i++) \n this.addIntersection(li, segmentIndex, geomIndex, i)\n \n }\n setData(data) {\n this._data = data\n }\n safeOctant(p0, p1) {\n if (p0.equals2D(p1)) return 0\n return Octant.octant(p0, p1)\n }\n getData() {\n return this._data\n }\n addIntersection() {\n if (arguments.length === 2) {\n const intPt = arguments[0], segmentIndex = arguments[1]\n this.addIntersectionNode(intPt, segmentIndex)\n } else if (arguments.length === 4) {\n const li = arguments[0], segmentIndex = arguments[1], geomIndex = arguments[2], intIndex = arguments[3]\n const intPt = new Coordinate(li.getIntersection(intIndex))\n this.addIntersection(intPt, segmentIndex)\n }\n }\n get interfaces_() {\n return [NodableSegmentString]\n }\n}\n","export default class Noder {\n getNodedSubstrings() {}\n computeNodes(segStrings) {}\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport NodedSegmentString from './NodedSegmentString.js'\nimport System from '../../../../java/lang/System.js'\nimport CoordinateArrays from '../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Collection from '../../../../java/util/Collection.js'\nimport Noder from './Noder.js'\nexport default class ScaledNoder {\n constructor() {\n ScaledNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._noder = null\n this._scaleFactor = null\n this._offsetX = null\n this._offsetY = null\n this._isScaled = false\n if (arguments.length === 2) {\n const noder = arguments[0], scaleFactor = arguments[1]\n ScaledNoder.constructor_.call(this, noder, scaleFactor, 0, 0)\n } else if (arguments.length === 4) {\n const noder = arguments[0], scaleFactor = arguments[1], offsetX = arguments[2], offsetY = arguments[3]\n this._noder = noder\n this._scaleFactor = scaleFactor\n this._isScaled = !this.isIntegerPrecision()\n }\n }\n rescale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.rescale(ss.getCoordinates())\n }\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n for (let i = 0; i < pts.length; i++) {\n pts[i].x = pts[i].x / this._scaleFactor + this._offsetX\n pts[i].y = pts[i].y / this._scaleFactor + this._offsetY\n }\n if (pts.length === 2 && pts[0].equals2D(pts[1])) \n System.out.println(pts)\n \n }\n }\n scale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n const nodedSegmentStrings = new ArrayList(segStrings.size())\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n nodedSegmentStrings.add(new NodedSegmentString(this.scale(ss.getCoordinates()), ss.getData()))\n }\n return nodedSegmentStrings\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n const roundPts = new Array(pts.length).fill(null)\n for (let i = 0; i < pts.length; i++) \n roundPts[i] = new Coordinate(Math.round((pts[i].x - this._offsetX) * this._scaleFactor), Math.round((pts[i].y - this._offsetY) * this._scaleFactor), pts[i].getZ())\n \n const roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts)\n return roundPtsNoDup\n }\n }\n isIntegerPrecision() {\n return this._scaleFactor === 1.0\n }\n getNodedSubstrings() {\n const splitSS = this._noder.getNodedSubstrings()\n if (this._isScaled) this.rescale(splitSS)\n return splitSS\n }\n computeNodes(inputSegStrings) {\n let intSegStrings = inputSegStrings\n if (this._isScaled) intSegStrings = this.scale(inputSegStrings)\n this._noder.computeNodes(intSegStrings)\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import Coordinate from './Coordinate.js'\nimport RuntimeException from '../../../../java/lang/RuntimeException.js'\n\nexport default class TopologyException extends RuntimeException {\n constructor(msg, pt) {\n super(pt ? msg + ' [ ' + pt + ' ]' : msg)\n this.pt = pt ? new Coordinate(pt) : undefined\n this.name = Object.keys({ TopologyException })[0]\n }\n getCoordinate() {\n return this.pt\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport Double from '../../../../java/lang/Double.js'\nexport default class Intersection {\n static intersection(p1, p2, q1, q2) {\n const minX0 = p1.x < p2.x ? p1.x : p2.x\n const minY0 = p1.y < p2.y ? p1.y : p2.y\n const maxX0 = p1.x > p2.x ? p1.x : p2.x\n const maxY0 = p1.y > p2.y ? p1.y : p2.y\n const minX1 = q1.x < q2.x ? q1.x : q2.x\n const minY1 = q1.y < q2.y ? q1.y : q2.y\n const maxX1 = q1.x > q2.x ? q1.x : q2.x\n const maxY1 = q1.y > q2.y ? q1.y : q2.y\n const intMinX = minX0 > minX1 ? minX0 : minX1\n const intMaxX = maxX0 < maxX1 ? maxX0 : maxX1\n const intMinY = minY0 > minY1 ? minY0 : minY1\n const intMaxY = maxY0 < maxY1 ? maxY0 : maxY1\n const midx = (intMinX + intMaxX) / 2.0\n const midy = (intMinY + intMaxY) / 2.0\n const p1x = p1.x - midx\n const p1y = p1.y - midy\n const p2x = p2.x - midx\n const p2y = p2.y - midy\n const q1x = q1.x - midx\n const q1y = q1.y - midy\n const q2x = q2.x - midx\n const q2y = q2.y - midy\n const px = p1y - p2y\n const py = p2x - p1x\n const pw = p1x * p2y - p2x * p1y\n const qx = q1y - q2y\n const qy = q2x - q1x\n const qw = q1x * q2y - q2x * q1y\n const x = py * qw - qy * pw\n const y = qx * pw - px * qw\n const w = px * qy - qx * py\n const xInt = x / w\n const yInt = y / w\n if (Double.isNaN(xInt) || (Double.isInfinite(xInt) || Double.isNaN(yInt)) || Double.isInfinite(yInt)) \n return null\n \n return new Coordinate(xInt + midx, yInt + midy)\n }\n}\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport MathUtil from '../math/MathUtil.js'\nimport Envelope from '../geom/Envelope.js'\nexport default class Distance {\n static pointToSegmentString(p, line) {\n if (line.length === 0) throw new IllegalArgumentException('Line array must contain at least one vertex')\n let minDistance = p.distance(line[0])\n for (let i = 0; i < line.length - 1; i++) {\n const dist = Distance.pointToSegment(p, line[i], line[i + 1])\n if (dist < minDistance) \n minDistance = dist\n \n }\n return minDistance\n }\n static segmentToSegment(A, B, C, D) {\n if (A.equals(B)) return Distance.pointToSegment(A, C, D)\n if (C.equals(D)) return Distance.pointToSegment(D, A, B)\n let noIntersection = false\n if (!Envelope.intersects(A, B, C, D)) {\n noIntersection = true\n } else {\n const denom = (B.x - A.x) * (D.y - C.y) - (B.y - A.y) * (D.x - C.x)\n if (denom === 0) {\n noIntersection = true\n } else {\n const r_num = (A.y - C.y) * (D.x - C.x) - (A.x - C.x) * (D.y - C.y)\n const s_num = (A.y - C.y) * (B.x - A.x) - (A.x - C.x) * (B.y - A.y)\n const s = s_num / denom\n const r = r_num / denom\n if (r < 0 || r > 1 || s < 0 || s > 1) \n noIntersection = true\n \n }\n }\n if (noIntersection) \n return MathUtil.min(Distance.pointToSegment(A, C, D), Distance.pointToSegment(B, C, D), Distance.pointToSegment(C, A, B), Distance.pointToSegment(D, A, B))\n \n return 0.0\n }\n static pointToLinePerpendicular(p, A, B) {\n const len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y)\n const s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2\n return Math.abs(s) * Math.sqrt(len2)\n }\n static pointToSegment(p, A, B) {\n if (A.x === B.x && A.y === B.y) return p.distance(A)\n const len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y)\n const r = ((p.x - A.x) * (B.x - A.x) + (p.y - A.y) * (B.y - A.y)) / len2\n if (r <= 0.0) return p.distance(A)\n if (r >= 1.0) return p.distance(B)\n const s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2\n return Math.abs(s) * Math.sqrt(len2)\n }\n}\n","import WKTWriter from '../io/WKTWriter.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Assert from '../util/Assert.js'\nimport StringBuilder from '../../../../java/lang/StringBuilder.js'\nexport default class LineIntersector {\n constructor() {\n LineIntersector.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._result = null\n this._inputLines = Array(2).fill().map(() => Array(2))\n this._intPt = new Array(2).fill(null)\n this._intLineIndex = null\n this._isProper = null\n this._pa = null\n this._pb = null\n this._precisionModel = null\n this._intPt[0] = new Coordinate()\n this._intPt[1] = new Coordinate()\n this._pa = this._intPt[0]\n this._pb = this._intPt[1]\n this._result = 0\n }\n static nonRobustComputeEdgeDistance(p, p1, p2) {\n const dx = p.x - p1.x\n const dy = p.y - p1.y\n const dist = Math.sqrt(dx * dx + dy * dy)\n Assert.isTrue(!(dist === 0.0 && !p.equals(p1)), 'Invalid distance calculation')\n return dist\n }\n static computeEdgeDistance(p, p0, p1) {\n const dx = Math.abs(p1.x - p0.x)\n const dy = Math.abs(p1.y - p0.y)\n let dist = -1.0\n if (p.equals(p0)) {\n dist = 0.0\n } else if (p.equals(p1)) {\n if (dx > dy) dist = dx; else dist = dy\n } else {\n const pdx = Math.abs(p.x - p0.x)\n const pdy = Math.abs(p.y - p0.y)\n if (dx > dy) dist = pdx; else dist = pdy\n if (dist === 0.0 && !p.equals(p0)) \n dist = Math.max(pdx, pdy)\n \n }\n Assert.isTrue(!(dist === 0.0 && !p.equals(p0)), 'Bad distance calculation')\n return dist\n }\n computeIntersection(p1, p2, p3, p4) {\n this._inputLines[0][0] = p1\n this._inputLines[0][1] = p2\n this._inputLines[1][0] = p3\n this._inputLines[1][1] = p4\n this._result = this.computeIntersect(p1, p2, p3, p4)\n }\n getIntersectionNum() {\n return this._result\n }\n computeIntLineIndex() {\n if (arguments.length === 0) {\n if (this._intLineIndex === null) {\n this._intLineIndex = Array(2).fill().map(() => Array(2))\n this.computeIntLineIndex(0)\n this.computeIntLineIndex(1)\n }\n } else if (arguments.length === 1) {\n const segmentIndex = arguments[0]\n const dist0 = this.getEdgeDistance(segmentIndex, 0)\n const dist1 = this.getEdgeDistance(segmentIndex, 1)\n if (dist0 > dist1) {\n this._intLineIndex[segmentIndex][0] = 0\n this._intLineIndex[segmentIndex][1] = 1\n } else {\n this._intLineIndex[segmentIndex][0] = 1\n this._intLineIndex[segmentIndex][1] = 0\n }\n }\n }\n isInteriorIntersection() {\n if (arguments.length === 0) {\n if (this.isInteriorIntersection(0)) return true\n if (this.isInteriorIntersection(1)) return true\n return false\n } else if (arguments.length === 1) {\n const inputLineIndex = arguments[0]\n for (let i = 0; i < this._result; i++) \n if (!(this._intPt[i].equals2D(this._inputLines[inputLineIndex][0]) || this._intPt[i].equals2D(this._inputLines[inputLineIndex][1]))) \n return true\n \n \n return false\n }\n }\n getIntersection(intIndex) {\n return this._intPt[intIndex]\n }\n getEdgeDistance(segmentIndex, intIndex) {\n const dist = LineIntersector.computeEdgeDistance(this._intPt[intIndex], this._inputLines[segmentIndex][0], this._inputLines[segmentIndex][1])\n return dist\n }\n isCollinear() {\n return this._result === LineIntersector.COLLINEAR_INTERSECTION\n }\n toString() {\n return WKTWriter.toLineString(this._inputLines[0][0], this._inputLines[0][1]) + ' - ' + WKTWriter.toLineString(this._inputLines[1][0], this._inputLines[1][1]) + this.getTopologySummary()\n }\n getEndpoint(segmentIndex, ptIndex) {\n return this._inputLines[segmentIndex][ptIndex]\n }\n getIndexAlongSegment(segmentIndex, intIndex) {\n this.computeIntLineIndex()\n return this._intLineIndex[segmentIndex][intIndex]\n }\n getTopologySummary() {\n const catBuilder = new StringBuilder()\n if (this.isEndPoint()) catBuilder.append(' endpoint')\n if (this._isProper) catBuilder.append(' proper')\n if (this.isCollinear()) catBuilder.append(' collinear')\n return catBuilder.toString()\n }\n isProper() {\n return this.hasIntersection() && this._isProper\n }\n setPrecisionModel(precisionModel) {\n this._precisionModel = precisionModel\n }\n isEndPoint() {\n return this.hasIntersection() && !this._isProper\n }\n hasIntersection() {\n return this._result !== LineIntersector.NO_INTERSECTION\n }\n isIntersection(pt) {\n for (let i = 0; i < this._result; i++) \n if (this._intPt[i].equals2D(pt)) \n return true\n \n \n return false\n }\n getIntersectionAlongSegment(segmentIndex, intIndex) {\n this.computeIntLineIndex()\n return this._intPt[this._intLineIndex[segmentIndex][intIndex]]\n }\n}\nLineIntersector.DONT_INTERSECT = 0\nLineIntersector.DO_INTERSECT = 1\nLineIntersector.COLLINEAR = 2\nLineIntersector.NO_INTERSECTION = 0\nLineIntersector.POINT_INTERSECTION = 1\nLineIntersector.COLLINEAR_INTERSECTION = 2\n","import Coordinate from '../geom/Coordinate.js'\nimport Envelope from '../geom/Envelope.js'\nimport Orientation from './Orientation.js'\nimport Intersection from './Intersection.js'\nimport CGAlgorithmsDD from './CGAlgorithmsDD.js'\nimport System from '../../../../java/lang/System.js'\nimport Distance from './Distance.js'\nimport LineIntersector from './LineIntersector.js'\nexport default class RobustLineIntersector extends LineIntersector {\n constructor() {\n super()\n }\n static nearestEndpoint(p1, p2, q1, q2) {\n let nearestPt = p1\n let minDist = Distance.pointToSegment(p1, q1, q2)\n let dist = Distance.pointToSegment(p2, q1, q2)\n if (dist < minDist) {\n minDist = dist\n nearestPt = p2\n }\n dist = Distance.pointToSegment(q1, p1, p2)\n if (dist < minDist) {\n minDist = dist\n nearestPt = q1\n }\n dist = Distance.pointToSegment(q2, p1, p2)\n if (dist < minDist) {\n minDist = dist\n nearestPt = q2\n }\n return nearestPt\n }\n isInSegmentEnvelopes(intPt) {\n const env0 = new Envelope(this._inputLines[0][0], this._inputLines[0][1])\n const env1 = new Envelope(this._inputLines[1][0], this._inputLines[1][1])\n return env0.contains(intPt) && env1.contains(intPt)\n }\n computeIntersection() {\n if (arguments.length === 3) {\n const p = arguments[0], p1 = arguments[1], p2 = arguments[2]\n this._isProper = false\n if (Envelope.intersects(p1, p2, p)) \n if (Orientation.index(p1, p2, p) === 0 && Orientation.index(p2, p1, p) === 0) {\n this._isProper = true\n if (p.equals(p1) || p.equals(p2)) \n this._isProper = false\n \n this._result = LineIntersector.POINT_INTERSECTION\n return null\n }\n \n this._result = LineIntersector.NO_INTERSECTION\n } else {\n return super.computeIntersection.apply(this, arguments)\n }\n }\n intersection(p1, p2, q1, q2) {\n let intPt = this.intersectionSafe(p1, p2, q1, q2)\n if (!this.isInSegmentEnvelopes(intPt)) \n intPt = new Coordinate(RobustLineIntersector.nearestEndpoint(p1, p2, q1, q2))\n \n if (this._precisionModel !== null) \n this._precisionModel.makePrecise(intPt)\n \n return intPt\n }\n checkDD(p1, p2, q1, q2, intPt) {\n const intPtDD = CGAlgorithmsDD.intersection(p1, p2, q1, q2)\n const isIn = this.isInSegmentEnvelopes(intPtDD)\n System.out.println('DD in env = ' + isIn + ' --------------------- ' + intPtDD)\n if (intPt.distance(intPtDD) > 0.0001) \n System.out.println('Distance = ' + intPt.distance(intPtDD))\n \n }\n intersectionSafe(p1, p2, q1, q2) {\n let intPt = Intersection.intersection(p1, p2, q1, q2)\n if (intPt === null) intPt = RobustLineIntersector.nearestEndpoint(p1, p2, q1, q2)\n return intPt\n }\n computeCollinearIntersection(p1, p2, q1, q2) {\n const p1q1p2 = Envelope.intersects(p1, p2, q1)\n const p1q2p2 = Envelope.intersects(p1, p2, q2)\n const q1p1q2 = Envelope.intersects(q1, q2, p1)\n const q1p2q2 = Envelope.intersects(q1, q2, p2)\n if (p1q1p2 && p1q2p2) {\n this._intPt[0] = q1\n this._intPt[1] = q2\n return LineIntersector.COLLINEAR_INTERSECTION\n }\n if (q1p1q2 && q1p2q2) {\n this._intPt[0] = p1\n this._intPt[1] = p2\n return LineIntersector.COLLINEAR_INTERSECTION\n }\n if (p1q1p2 && q1p1q2) {\n this._intPt[0] = q1\n this._intPt[1] = p1\n return q1.equals(p1) && !p1q2p2 && !q1p2q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION\n }\n if (p1q1p2 && q1p2q2) {\n this._intPt[0] = q1\n this._intPt[1] = p2\n return q1.equals(p2) && !p1q2p2 && !q1p1q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION\n }\n if (p1q2p2 && q1p1q2) {\n this._intPt[0] = q2\n this._intPt[1] = p1\n return q2.equals(p1) && !p1q1p2 && !q1p2q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION\n }\n if (p1q2p2 && q1p2q2) {\n this._intPt[0] = q2\n this._intPt[1] = p2\n return q2.equals(p2) && !p1q1p2 && !q1p1q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION\n }\n return LineIntersector.NO_INTERSECTION\n }\n computeIntersect(p1, p2, q1, q2) {\n this._isProper = false\n if (!Envelope.intersects(p1, p2, q1, q2)) return LineIntersector.NO_INTERSECTION\n const Pq1 = Orientation.index(p1, p2, q1)\n const Pq2 = Orientation.index(p1, p2, q2)\n if (Pq1 > 0 && Pq2 > 0 || Pq1 < 0 && Pq2 < 0) \n return LineIntersector.NO_INTERSECTION\n \n const Qp1 = Orientation.index(q1, q2, p1)\n const Qp2 = Orientation.index(q1, q2, p2)\n if (Qp1 > 0 && Qp2 > 0 || Qp1 < 0 && Qp2 < 0) \n return LineIntersector.NO_INTERSECTION\n \n const collinear = Pq1 === 0 && Pq2 === 0 && Qp1 === 0 && Qp2 === 0\n if (collinear) \n return this.computeCollinearIntersection(p1, p2, q1, q2)\n \n if (Pq1 === 0 || Pq2 === 0 || Qp1 === 0 || Qp2 === 0) {\n this._isProper = false\n if (p1.equals2D(q1) || p1.equals2D(q2)) \n this._intPt[0] = p1\n else if (p2.equals2D(q1) || p2.equals2D(q2)) \n this._intPt[0] = p2\n else if (Pq1 === 0) \n this._intPt[0] = new Coordinate(q1)\n else if (Pq2 === 0) \n this._intPt[0] = new Coordinate(q2)\n else if (Qp1 === 0) \n this._intPt[0] = new Coordinate(p1)\n else if (Qp2 === 0) \n this._intPt[0] = new Coordinate(p2)\n \n } else {\n this._isProper = true\n this._intPt[0] = this.intersection(p1, p2, q1, q2)\n }\n return LineIntersector.POINT_INTERSECTION\n }\n}\n","import GeometryFactory from '../geom/GeometryFactory.js'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector.js'\nimport RuntimeException from '../../../../java/lang/RuntimeException.js'\nexport default class NodingValidator {\n constructor() {\n NodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._segStrings = null\n const segStrings = arguments[0]\n this._segStrings = segStrings\n }\n checkEndPtVertexIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n this.checkEndPtVertexIntersections(pts[0], this._segStrings)\n this.checkEndPtVertexIntersections(pts[pts.length - 1], this._segStrings)\n }\n } else if (arguments.length === 2) {\n const testPt = arguments[0], segStrings = arguments[1]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n for (let j = 1; j < pts.length - 1; j++) \n if (pts[j].equals(testPt)) throw new RuntimeException('found endpt/interior pt intersection at index ' + j + ' :pt ' + testPt)\n \n }\n }\n }\n checkInteriorIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss0 = i.next()\n for (let j = this._segStrings.iterator(); j.hasNext(); ) {\n const ss1 = j.next()\n this.checkInteriorIntersections(ss0, ss1)\n }\n }\n } else if (arguments.length === 2) {\n const ss0 = arguments[0], ss1 = arguments[1]\n const pts0 = ss0.getCoordinates()\n const pts1 = ss1.getCoordinates()\n for (let i0 = 0; i0 < pts0.length - 1; i0++) \n for (let i1 = 0; i1 < pts1.length - 1; i1++) \n this.checkInteriorIntersections(ss0, i0, ss1, i1)\n \n \n } else if (arguments.length === 4) {\n const e0 = arguments[0], segIndex0 = arguments[1], e1 = arguments[2], segIndex1 = arguments[3]\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isProper() || this.hasInteriorIntersection(this._li, p00, p01) || this.hasInteriorIntersection(this._li, p10, p11)) \n throw new RuntimeException('found non-noded intersection at ' + p00 + '-' + p01 + ' and ' + p10 + '-' + p11)\n \n \n }\n }\n checkValid() {\n this.checkEndPtVertexIntersections()\n this.checkInteriorIntersections()\n this.checkCollapses()\n }\n checkCollapses() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.checkCollapses(ss)\n }\n } else if (arguments.length === 1) {\n const ss = arguments[0]\n const pts = ss.getCoordinates()\n for (let i = 0; i < pts.length - 2; i++) \n this.checkCollapse(pts[i], pts[i + 1], pts[i + 2])\n \n }\n }\n hasInteriorIntersection(li, p0, p1) {\n for (let i = 0; i < li.getIntersectionNum(); i++) {\n const intPt = li.getIntersection(i)\n if (!(intPt.equals(p0) || intPt.equals(p1))) return true\n }\n return false\n }\n checkCollapse(p0, p1, p2) {\n if (p0.equals(p2)) throw new RuntimeException('found non-noded collapse at ' + NodingValidator.fact.createLineString([p0, p1, p2]))\n }\n}\nNodingValidator.fact = new GeometryFactory()\n","export default class Boundable {\n getBounds() {}\n}\n","import Boundable from './Boundable.js'\nimport Serializable from '../../../../../java/io/Serializable.js'\nexport default class ItemBoundable {\n constructor() {\n ItemBoundable.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._bounds = null\n this._item = null\n const bounds = arguments[0], item = arguments[1]\n this._bounds = bounds\n this._item = item\n }\n getItem() {\n return this._item\n }\n getBounds() {\n return this._bounds\n }\n get interfaces_() {\n return [Boundable, Serializable]\n }\n}\n","import ArrayList from '../../../../java/util/ArrayList.js'\nexport default class PriorityQueue {\n constructor() {\n PriorityQueue.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._size = null\n this._items = null\n this._size = 0\n this._items = new ArrayList()\n this._items.add(null)\n }\n poll() {\n if (this.isEmpty()) return null\n const minItem = this._items.get(1)\n this._items.set(1, this._items.get(this._size))\n this._size -= 1\n this.reorder(1)\n return minItem\n }\n size() {\n return this._size\n }\n reorder(hole) {\n let child = null\n const tmp = this._items.get(hole)\n for (; hole * 2 <= this._size; hole = child) {\n child = hole * 2\n if (child !== this._size && this._items.get(child + 1).compareTo(this._items.get(child)) < 0) child++\n if (this._items.get(child).compareTo(tmp) < 0) this._items.set(hole, this._items.get(child)); else break\n }\n this._items.set(hole, tmp)\n }\n clear() {\n this._size = 0\n this._items.clear()\n }\n peek() {\n if (this.isEmpty()) return null\n const minItem = this._items.get(1)\n return minItem\n }\n isEmpty() {\n return this._size === 0\n }\n add(x) {\n this._items.add(null)\n this._size += 1\n let hole = this._size\n this._items.set(0, x)\n for (; x.compareTo(this._items.get(Math.trunc(hole / 2))) < 0; hole /= 2) \n this._items.set(hole, this._items.get(Math.trunc(hole / 2)))\n \n this._items.set(hole, x)\n }\n}\n","export default class SpatialIndex {\n query() {\n if (arguments.length === 1) {\n const searchEnv = arguments[0]\n } else if (arguments.length === 2) {\n const searchEnv = arguments[0], visitor = arguments[1]\n }\n }\n insert(itemEnv, item) {}\n remove(itemEnv, item) {}\n}\n","import Boundable from './Boundable.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Serializable from '../../../../../java/io/Serializable.js'\nimport Assert from '../../util/Assert.js'\nexport default class AbstractNode {\n constructor() {\n AbstractNode.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._childBoundables = new ArrayList()\n this._bounds = null\n this._level = null\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const level = arguments[0]\n this._level = level\n }\n }\n getLevel() {\n return this._level\n }\n addChildBoundable(childBoundable) {\n Assert.isTrue(this._bounds === null)\n this._childBoundables.add(childBoundable)\n }\n isEmpty() {\n return this._childBoundables.isEmpty()\n }\n getBounds() {\n if (this._bounds === null) \n this._bounds = this.computeBounds()\n \n return this._bounds\n }\n size() {\n return this._childBoundables.size()\n }\n getChildBoundables() {\n return this._childBoundables\n }\n get interfaces_() {\n return [Boundable, Serializable]\n }\n}\n","import Arrays from './Arrays.js'\nimport ArrayList from './ArrayList.js'\n\nconst Collections = {\n reverseOrder: function() {\n return {\n compare(a, b) {\n return b.compareTo(a)\n }\n }\n },\n min: function(l) {\n Collections.sort(l)\n return l.get(0)\n },\n sort: function(l, c) {\n const a = l.toArray()\n if (c)\n Arrays.sort(a, c)\n else\n Arrays.sort(a)\n const i = l.iterator()\n for (let pos = 0, alen = a.length; pos < alen; pos++) {\n i.next()\n i.set(a[pos])\n }\n },\n singletonList: function(o) {\n const arrayList = new ArrayList()\n arrayList.add(o)\n return arrayList\n }\n}\n\nexport default Collections\n","export default class EnvelopeDistance {\n static distance(x1, y1, x2, y2) {\n const dx = x2 - x1\n const dy = y2 - y1\n return Math.sqrt(dx * dx + dy * dy)\n }\n static maximumDistance(env1, env2) {\n const minx = Math.min(env1.getMinX(), env2.getMinX())\n const miny = Math.min(env1.getMinY(), env2.getMinY())\n const maxx = Math.max(env1.getMaxX(), env2.getMaxX())\n const maxy = Math.max(env1.getMaxY(), env2.getMaxY())\n return EnvelopeDistance.distance(minx, miny, maxx, maxy)\n }\n static minMaxDistance(a, b) {\n const aminx = a.getMinX()\n const aminy = a.getMinY()\n const amaxx = a.getMaxX()\n const amaxy = a.getMaxY()\n const bminx = b.getMinX()\n const bminy = b.getMinY()\n const bmaxx = b.getMaxX()\n const bmaxy = b.getMaxY()\n let dist = EnvelopeDistance.maxDistance(aminx, aminy, aminx, amaxy, bminx, bminy, bminx, bmaxy)\n dist = Math.min(dist, EnvelopeDistance.maxDistance(aminx, aminy, aminx, amaxy, bminx, bminy, bmaxx, bminy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(aminx, aminy, aminx, amaxy, bmaxx, bmaxy, bminx, bmaxy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(aminx, aminy, aminx, amaxy, bmaxx, bmaxy, bmaxx, bminy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(aminx, aminy, amaxx, aminy, bminx, bminy, bminx, bmaxy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(aminx, aminy, amaxx, aminy, bminx, bminy, bmaxx, bminy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(aminx, aminy, amaxx, aminy, bmaxx, bmaxy, bminx, bmaxy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(aminx, aminy, amaxx, aminy, bmaxx, bmaxy, bmaxx, bminy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, aminx, amaxy, bminx, bminy, bminx, bmaxy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, aminx, amaxy, bminx, bminy, bmaxx, bminy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, aminx, amaxy, bmaxx, bmaxy, bminx, bmaxy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, aminx, amaxy, bmaxx, bmaxy, bmaxx, bminy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, amaxx, aminy, bminx, bminy, bminx, bmaxy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, amaxx, aminy, bminx, bminy, bmaxx, bminy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, amaxx, aminy, bmaxx, bmaxy, bminx, bmaxy))\n dist = Math.min(dist, EnvelopeDistance.maxDistance(amaxx, amaxy, amaxx, aminy, bmaxx, bmaxy, bmaxx, bminy))\n return dist\n }\n static maxDistance(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n let dist = EnvelopeDistance.distance(ax1, ay1, bx1, by1)\n dist = Math.max(dist, EnvelopeDistance.distance(ax1, ay1, bx2, by2))\n dist = Math.max(dist, EnvelopeDistance.distance(ax2, ay2, bx1, by1))\n dist = Math.max(dist, EnvelopeDistance.distance(ax2, ay2, bx2, by2))\n return dist\n }\n}\n","import IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException.js'\nimport AbstractNode from './AbstractNode.js'\nimport EnvelopeDistance from './EnvelopeDistance.js'\nimport Comparable from '../../../../../java/lang/Comparable.js'\nexport default class BoundablePair {\n constructor() {\n BoundablePair.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._boundable1 = null\n this._boundable2 = null\n this._distance = null\n this._itemDistance = null\n const boundable1 = arguments[0], boundable2 = arguments[1], itemDistance = arguments[2]\n this._boundable1 = boundable1\n this._boundable2 = boundable2\n this._itemDistance = itemDistance\n this._distance = this.distance()\n }\n static area(b) {\n return b.getBounds().getArea()\n }\n static isComposite(item) {\n return item instanceof AbstractNode\n }\n maximumDistance() {\n return EnvelopeDistance.maximumDistance(this._boundable1.getBounds(), this._boundable2.getBounds())\n }\n expandToQueue(priQ, minDistance) {\n const isComp1 = BoundablePair.isComposite(this._boundable1)\n const isComp2 = BoundablePair.isComposite(this._boundable2)\n if (isComp1 && isComp2) {\n if (BoundablePair.area(this._boundable1) > BoundablePair.area(this._boundable2)) {\n this.expand(this._boundable1, this._boundable2, false, priQ, minDistance)\n return null\n } else {\n this.expand(this._boundable2, this._boundable1, true, priQ, minDistance)\n return null\n }\n } else if (isComp1) {\n this.expand(this._boundable1, this._boundable2, false, priQ, minDistance)\n return null\n } else if (isComp2) {\n this.expand(this._boundable2, this._boundable1, true, priQ, minDistance)\n return null\n }\n throw new IllegalArgumentException('neither boundable is composite')\n }\n isLeaves() {\n return !(BoundablePair.isComposite(this._boundable1) || BoundablePair.isComposite(this._boundable2))\n }\n getBoundable(i) {\n if (i === 0) return this._boundable1\n return this._boundable2\n }\n getDistance() {\n return this._distance\n }\n distance() {\n if (this.isLeaves()) \n return this._itemDistance.distance(this._boundable1, this._boundable2)\n \n return this._boundable1.getBounds().distance(this._boundable2.getBounds())\n }\n compareTo(o) {\n const nd = o\n if (this._distance < nd._distance) return -1\n if (this._distance > nd._distance) return 1\n return 0\n }\n expand(bndComposite, bndOther, isFlipped, priQ, minDistance) {\n const children = bndComposite.getChildBoundables()\n for (let i = children.iterator(); i.hasNext(); ) {\n const child = i.next()\n let bp = null\n if (isFlipped) \n bp = new BoundablePair(bndOther, child, this._itemDistance)\n else \n bp = new BoundablePair(child, bndOther, this._itemDistance)\n \n if (bp.getDistance() < minDistance) \n priQ.add(bp)\n \n }\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","export default class ItemVisitor {\n visitItem(item) {}\n}\n","import ItemBoundable from './ItemBoundable.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport ItemVisitor from '../ItemVisitor.js'\nimport AbstractNode from './AbstractNode.js'\nimport Collections from '../../../../../java/util/Collections.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Serializable from '../../../../../java/io/Serializable.js'\nimport Assert from '../../util/Assert.js'\nimport List from '../../../../../java/util/List.js'\nexport default class AbstractSTRtree {\n constructor() {\n AbstractSTRtree.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._root = null\n this._built = false\n this._itemBoundables = new ArrayList()\n this._nodeCapacity = null\n if (arguments.length === 0) {\n AbstractSTRtree.constructor_.call(this, AbstractSTRtree.DEFAULT_NODE_CAPACITY)\n } else if (arguments.length === 1) {\n const nodeCapacity = arguments[0]\n Assert.isTrue(nodeCapacity > 1, 'Node capacity must be greater than 1')\n this._nodeCapacity = nodeCapacity\n }\n }\n static compareDoubles(a, b) {\n return a > b ? 1 : a < b ? -1 : 0\n }\n queryInternal() {\n if (hasInterface(arguments[2], ItemVisitor) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n const searchBounds = arguments[0], node = arguments[1], visitor = arguments[2]\n const childBoundables = node.getChildBoundables()\n for (let i = 0; i < childBoundables.size(); i++) {\n const childBoundable = childBoundables.get(i)\n if (!this.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds)) \n continue\n \n if (childBoundable instanceof AbstractNode) \n this.queryInternal(searchBounds, childBoundable, visitor)\n else if (childBoundable instanceof ItemBoundable) \n visitor.visitItem(childBoundable.getItem())\n else \n Assert.shouldNeverReachHere()\n \n }\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n const searchBounds = arguments[0], node = arguments[1], matches = arguments[2]\n const childBoundables = node.getChildBoundables()\n for (let i = 0; i < childBoundables.size(); i++) {\n const childBoundable = childBoundables.get(i)\n if (!this.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds)) \n continue\n \n if (childBoundable instanceof AbstractNode) \n this.queryInternal(searchBounds, childBoundable, matches)\n else if (childBoundable instanceof ItemBoundable) \n matches.add(childBoundable.getItem())\n else \n Assert.shouldNeverReachHere()\n \n }\n }\n }\n insert(bounds, item) {\n Assert.isTrue(!this._built, 'Cannot insert items into an STR packed R-tree after it has been built.')\n this._itemBoundables.add(new ItemBoundable(bounds, item))\n }\n boundablesAtLevel() {\n if (arguments.length === 1) {\n const level = arguments[0]\n const boundables = new ArrayList()\n this.boundablesAtLevel(level, this._root, boundables)\n return boundables\n } else if (arguments.length === 3) {\n const level = arguments[0], top = arguments[1], boundables = arguments[2]\n Assert.isTrue(level > -2)\n if (top.getLevel() === level) {\n boundables.add(top)\n return null\n }\n for (let i = top.getChildBoundables().iterator(); i.hasNext(); ) {\n const boundable = i.next()\n if (boundable instanceof AbstractNode) {\n this.boundablesAtLevel(level, boundable, boundables)\n } else {\n Assert.isTrue(boundable instanceof ItemBoundable)\n if (level === -1) \n boundables.add(boundable)\n \n }\n }\n return null\n }\n }\n getRoot() {\n this.build()\n return this._root\n }\n remove() {\n if (arguments.length === 2) {\n const searchBounds = arguments[0], item = arguments[1]\n this.build()\n if (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) \n return this.remove(searchBounds, this._root, item)\n \n return false\n } else if (arguments.length === 3) {\n const searchBounds = arguments[0], node = arguments[1], item = arguments[2]\n let found = this.removeItem(node, item)\n if (found) return true\n let childToPrune = null\n for (let i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n const childBoundable = i.next()\n if (!this.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds)) \n continue\n \n if (childBoundable instanceof AbstractNode) {\n found = this.remove(searchBounds, childBoundable, item)\n if (found) {\n childToPrune = childBoundable\n break\n }\n }\n }\n if (childToPrune !== null) \n if (childToPrune.getChildBoundables().isEmpty()) \n node.getChildBoundables().remove(childToPrune)\n \n \n return found\n }\n }\n createHigherLevels(boundablesOfALevel, level) {\n Assert.isTrue(!boundablesOfALevel.isEmpty())\n const parentBoundables = this.createParentBoundables(boundablesOfALevel, level + 1)\n if (parentBoundables.size() === 1) \n return parentBoundables.get(0)\n \n return this.createHigherLevels(parentBoundables, level + 1)\n }\n depth() {\n if (arguments.length === 0) {\n if (this.isEmpty()) \n return 0\n \n this.build()\n return this.depth(this._root)\n } else if (arguments.length === 1) {\n const node = arguments[0]\n let maxChildDepth = 0\n for (let i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n const childBoundable = i.next()\n if (childBoundable instanceof AbstractNode) {\n const childDepth = this.depth(childBoundable)\n if (childDepth > maxChildDepth) maxChildDepth = childDepth\n }\n }\n return maxChildDepth + 1\n }\n }\n createParentBoundables(childBoundables, newLevel) {\n Assert.isTrue(!childBoundables.isEmpty())\n const parentBoundables = new ArrayList()\n parentBoundables.add(this.createNode(newLevel))\n const sortedChildBoundables = new ArrayList(childBoundables)\n Collections.sort(sortedChildBoundables, this.getComparator())\n for (let i = sortedChildBoundables.iterator(); i.hasNext(); ) {\n const childBoundable = i.next()\n if (this.lastNode(parentBoundables).getChildBoundables().size() === this.getNodeCapacity()) \n parentBoundables.add(this.createNode(newLevel))\n \n this.lastNode(parentBoundables).addChildBoundable(childBoundable)\n }\n return parentBoundables\n }\n isEmpty() {\n if (!this._built) return this._itemBoundables.isEmpty()\n return this._root.isEmpty()\n }\n getNodeCapacity() {\n return this._nodeCapacity\n }\n lastNode(nodes) {\n return nodes.get(nodes.size() - 1)\n }\n size() {\n if (arguments.length === 0) {\n if (this.isEmpty()) \n return 0\n \n this.build()\n return this.size(this._root)\n } else if (arguments.length === 1) {\n const node = arguments[0]\n let size = 0\n for (let i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n const childBoundable = i.next()\n if (childBoundable instanceof AbstractNode) \n size += this.size(childBoundable)\n else if (childBoundable instanceof ItemBoundable) \n size += 1\n \n }\n return size\n }\n }\n removeItem(node, item) {\n let childToRemove = null\n for (let i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n const childBoundable = i.next()\n if (childBoundable instanceof ItemBoundable) \n if (childBoundable.getItem() === item) childToRemove = childBoundable\n \n }\n if (childToRemove !== null) {\n node.getChildBoundables().remove(childToRemove)\n return true\n }\n return false\n }\n itemsTree() {\n if (arguments.length === 0) {\n this.build()\n const valuesTree = this.itemsTree(this._root)\n if (valuesTree === null) return new ArrayList()\n return valuesTree\n } else if (arguments.length === 1) {\n const node = arguments[0]\n const valuesTreeForNode = new ArrayList()\n for (let i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n const childBoundable = i.next()\n if (childBoundable instanceof AbstractNode) {\n const valuesTreeForChild = this.itemsTree(childBoundable)\n if (valuesTreeForChild !== null) valuesTreeForNode.add(valuesTreeForChild)\n } else if (childBoundable instanceof ItemBoundable) {\n valuesTreeForNode.add(childBoundable.getItem())\n } else {\n Assert.shouldNeverReachHere()\n }\n }\n if (valuesTreeForNode.size() <= 0) return null\n return valuesTreeForNode\n }\n }\n query() {\n if (arguments.length === 1) {\n const searchBounds = arguments[0]\n this.build()\n const matches = new ArrayList()\n if (this.isEmpty()) \n return matches\n \n if (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) \n this.queryInternal(searchBounds, this._root, matches)\n \n return matches\n } else if (arguments.length === 2) {\n const searchBounds = arguments[0], visitor = arguments[1]\n this.build()\n if (this.isEmpty()) \n return null\n \n if (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) \n this.queryInternal(searchBounds, this._root, visitor)\n \n }\n }\n build() {\n if (this._built) return null\n this._root = this._itemBoundables.isEmpty() ? this.createNode(0) : this.createHigherLevels(this._itemBoundables, -1)\n this._itemBoundables = null\n this._built = true\n }\n get interfaces_() {\n return [Serializable]\n }\n}\nfunction IntersectsOp() {}\nAbstractSTRtree.IntersectsOp = IntersectsOp\nAbstractSTRtree.DEFAULT_NODE_CAPACITY = 10\n","export default class ItemDistance {\n distance(item1, item2) {}\n}\n","import ItemBoundable from './ItemBoundable.js'\nimport PriorityQueue from '../../util/PriorityQueue.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport Double from '../../../../../java/lang/Double.js'\nimport Serializable from '../../../../../java/io/Serializable.js'\nimport SpatialIndex from '../SpatialIndex.js'\nimport AbstractNode from './AbstractNode.js'\nimport Collections from '../../../../../java/util/Collections.js'\nimport BoundablePair from './BoundablePair.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Comparator from '../../../../../java/util/Comparator.js'\nimport Envelope from '../../geom/Envelope.js'\nimport Assert from '../../util/Assert.js'\nimport AbstractSTRtree from './AbstractSTRtree.js'\nimport ItemDistance from './ItemDistance.js'\nexport default class STRtree extends AbstractSTRtree {\n constructor() {\n super()\n STRtree.constructor_.apply(this, arguments)\n }\n static constructor_() {\n if (arguments.length === 0) {\n STRtree.constructor_.call(this, STRtree.DEFAULT_NODE_CAPACITY)\n } else if (arguments.length === 1) {\n const nodeCapacity = arguments[0]\n AbstractSTRtree.constructor_.call(this, nodeCapacity)\n }\n }\n static getItems(kNearestNeighbors) {\n const items = new Array(kNearestNeighbors.size()).fill(null)\n let count = 0\n while (!kNearestNeighbors.isEmpty()) {\n const bp = kNearestNeighbors.poll()\n items[count] = bp.getBoundable(0).getItem()\n count++\n }\n return items\n }\n static avg(a, b) {\n return (a + b) / 2\n }\n static centreY(e) {\n return STRtree.avg(e.getMinY(), e.getMaxY())\n }\n static centreX(e) {\n return STRtree.avg(e.getMinX(), e.getMaxX())\n }\n size() {\n if (arguments.length === 0) \n return super.size.call(this)\n else return super.size.apply(this, arguments)\n }\n insert() {\n if (arguments.length === 2 && (arguments[1] instanceof Object && arguments[0] instanceof Envelope)) {\n const itemEnv = arguments[0], item = arguments[1]\n if (itemEnv.isNull()) \n return null\n \n super.insert.call(this, itemEnv, item)\n } else {\n return super.insert.apply(this, arguments)\n }\n }\n getIntersectsOp() {\n return STRtree.intersectsOp\n }\n verticalSlices(childBoundables, sliceCount) {\n const sliceCapacity = Math.trunc(Math.ceil(childBoundables.size() / sliceCount))\n const slices = new Array(sliceCount).fill(null)\n const i = childBoundables.iterator()\n for (let j = 0; j < sliceCount; j++) {\n slices[j] = new ArrayList()\n let boundablesAddedToSlice = 0\n while (i.hasNext() && boundablesAddedToSlice < sliceCapacity) {\n const childBoundable = i.next()\n slices[j].add(childBoundable)\n boundablesAddedToSlice++\n }\n }\n return slices\n }\n query() {\n if (arguments.length === 1) {\n const searchEnv = arguments[0]\n return super.query.call(this, searchEnv)\n } else if (arguments.length === 2) {\n const searchEnv = arguments[0], visitor = arguments[1]\n super.query.call(this, searchEnv, visitor)\n }\n }\n getComparator() {\n return STRtree.yComparator\n }\n createParentBoundablesFromVerticalSlice(childBoundables, newLevel) {\n return super.createParentBoundables.call(this, childBoundables, newLevel)\n }\n remove() {\n if (arguments.length === 2 && (arguments[1] instanceof Object && arguments[0] instanceof Envelope)) {\n const itemEnv = arguments[0], item = arguments[1]\n return super.remove.call(this, itemEnv, item)\n } else {\n return super.remove.apply(this, arguments)\n }\n }\n depth() {\n if (arguments.length === 0) \n return super.depth.call(this)\n else return super.depth.apply(this, arguments)\n }\n createParentBoundables(childBoundables, newLevel) {\n Assert.isTrue(!childBoundables.isEmpty())\n const minLeafCount = Math.trunc(Math.ceil(childBoundables.size() / this.getNodeCapacity()))\n const sortedChildBoundables = new ArrayList(childBoundables)\n Collections.sort(sortedChildBoundables, STRtree.xComparator)\n const verticalSlices = this.verticalSlices(sortedChildBoundables, Math.trunc(Math.ceil(Math.sqrt(minLeafCount))))\n return this.createParentBoundablesFromVerticalSlices(verticalSlices, newLevel)\n }\n nearestNeighbour() {\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], ItemDistance)) {\n const itemDist = arguments[0]\n if (this.isEmpty()) return null\n const bp = new BoundablePair(this.getRoot(), this.getRoot(), itemDist)\n return this.nearestNeighbour(bp)\n } else if (arguments[0] instanceof BoundablePair) {\n const initBndPair = arguments[0]\n let distanceLowerBound = Double.POSITIVE_INFINITY\n let minPair = null\n const priQ = new PriorityQueue()\n priQ.add(initBndPair)\n while (!priQ.isEmpty() && distanceLowerBound > 0.0) {\n const bndPair = priQ.poll()\n const pairDistance = bndPair.getDistance()\n if (pairDistance >= distanceLowerBound) break\n if (bndPair.isLeaves()) {\n distanceLowerBound = pairDistance\n minPair = bndPair\n } else {\n bndPair.expandToQueue(priQ, distanceLowerBound)\n }\n }\n if (minPair === null) return null\n return [minPair.getBoundable(0).getItem(), minPair.getBoundable(1).getItem()]\n }\n } else if (arguments.length === 2) {\n const tree = arguments[0], itemDist = arguments[1]\n if (this.isEmpty() || tree.isEmpty()) return null\n const bp = new BoundablePair(this.getRoot(), tree.getRoot(), itemDist)\n return this.nearestNeighbour(bp)\n } else if (arguments.length === 3) {\n const env = arguments[0], item = arguments[1], itemDist = arguments[2]\n const bnd = new ItemBoundable(env, item)\n const bp = new BoundablePair(this.getRoot(), bnd, itemDist)\n return this.nearestNeighbour(bp)[0]\n } else if (arguments.length === 4) {\n const env = arguments[0], item = arguments[1], itemDist = arguments[2], k = arguments[3]\n const bnd = new ItemBoundable(env, item)\n const bp = new BoundablePair(this.getRoot(), bnd, itemDist)\n return this.nearestNeighbourK(bp, k)\n }\n }\n isWithinDistance() {\n if (arguments.length === 2) {\n const initBndPair = arguments[0], maxDistance = arguments[1]\n let distanceUpperBound = Double.POSITIVE_INFINITY\n const priQ = new PriorityQueue()\n priQ.add(initBndPair)\n while (!priQ.isEmpty()) {\n const bndPair = priQ.poll()\n const pairDistance = bndPair.getDistance()\n if (pairDistance > maxDistance) return false\n if (bndPair.maximumDistance() <= maxDistance) return true\n if (bndPair.isLeaves()) {\n distanceUpperBound = pairDistance\n if (distanceUpperBound <= maxDistance) return true\n } else {\n bndPair.expandToQueue(priQ, distanceUpperBound)\n }\n }\n return false\n } else if (arguments.length === 3) {\n const tree = arguments[0], itemDist = arguments[1], maxDistance = arguments[2]\n const bp = new BoundablePair(this.getRoot(), tree.getRoot(), itemDist)\n return this.isWithinDistance(bp, maxDistance)\n }\n }\n createParentBoundablesFromVerticalSlices(verticalSlices, newLevel) {\n Assert.isTrue(verticalSlices.length > 0)\n const parentBoundables = new ArrayList()\n for (let i = 0; i < verticalSlices.length; i++) \n parentBoundables.addAll(this.createParentBoundablesFromVerticalSlice(verticalSlices[i], newLevel))\n \n return parentBoundables\n }\n nearestNeighbourK() {\n if (arguments.length === 2) {\n const initBndPair = arguments[0], k = arguments[1]\n return this.nearestNeighbourK(initBndPair, Double.POSITIVE_INFINITY, k)\n } else if (arguments.length === 3) {\n const initBndPair = arguments[0], maxDistance = arguments[1], k = arguments[2]\n let distanceLowerBound = maxDistance\n const priQ = new PriorityQueue()\n priQ.add(initBndPair)\n const kNearestNeighbors = new PriorityQueue()\n while (!priQ.isEmpty() && distanceLowerBound >= 0.0) {\n const bndPair = priQ.poll()\n const pairDistance = bndPair.getDistance()\n if (pairDistance >= distanceLowerBound) \n break\n \n if (bndPair.isLeaves()) \n if (kNearestNeighbors.size() < k) {\n kNearestNeighbors.add(bndPair)\n } else {\n const bp1 = kNearestNeighbors.peek()\n if (bp1.getDistance() > pairDistance) {\n kNearestNeighbors.poll()\n kNearestNeighbors.add(bndPair)\n }\n const bp2 = kNearestNeighbors.peek()\n distanceLowerBound = bp2.getDistance()\n }\n else \n bndPair.expandToQueue(priQ, distanceLowerBound)\n \n }\n return STRtree.getItems(kNearestNeighbors)\n }\n }\n createNode(level) {\n return new STRtreeNode(level)\n }\n get interfaces_() {\n return [SpatialIndex, Serializable]\n }\n}\nclass STRtreeNode extends AbstractNode {\n constructor() {\n super()\n STRtreeNode.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const level = arguments[0]\n AbstractNode.constructor_.call(this, level)\n }\n computeBounds() {\n let bounds = null\n for (let i = this.getChildBoundables().iterator(); i.hasNext(); ) {\n const childBoundable = i.next()\n if (bounds === null) \n bounds = new Envelope(childBoundable.getBounds())\n else \n bounds.expandToInclude(childBoundable.getBounds())\n \n }\n return bounds\n }\n}\nSTRtree.STRtreeNode = STRtreeNode\nSTRtree.xComparator = new (class {\n get interfaces_() {\n return [Comparator]\n }\n compare(o1, o2) {\n return AbstractSTRtree.compareDoubles(STRtree.centreX(o1.getBounds()), STRtree.centreX(o2.getBounds()))\n }\n})()\nSTRtree.yComparator = new (class {\n get interfaces_() {\n return [Comparator]\n }\n compare(o1, o2) {\n return AbstractSTRtree.compareDoubles(STRtree.centreY(o1.getBounds()), STRtree.centreY(o2.getBounds()))\n }\n})()\nSTRtree.intersectsOp = new (class {\n get interfaces_() {\n return [IntersectsOp]\n }\n intersects(aBounds, bBounds) {\n return aBounds.intersects(bBounds)\n }\n})()\nSTRtree.DEFAULT_NODE_CAPACITY = 10\n","import Coordinate from './Coordinate.js'\nimport Double from '../../../../java/lang/Double.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector.js'\nimport Serializable from '../../../../java/io/Serializable.js'\nimport IllegalStateException from '../../../../java/lang/IllegalStateException.js'\nimport Distance from '../algorithm/Distance.js'\nimport Orientation from '../algorithm/Orientation.js'\nimport Intersection from '../algorithm/Intersection.js'\nexport default class LineSegment {\n constructor() {\n LineSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.p0 = null\n this.p1 = null\n if (arguments.length === 0) {\n LineSegment.constructor_.call(this, new Coordinate(), new Coordinate())\n } else if (arguments.length === 1) {\n const ls = arguments[0]\n LineSegment.constructor_.call(this, ls.p0, ls.p1)\n } else if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n this.p0 = p0\n this.p1 = p1\n } else if (arguments.length === 4) {\n const x0 = arguments[0], y0 = arguments[1], x1 = arguments[2], y1 = arguments[3]\n LineSegment.constructor_.call(this, new Coordinate(x0, y0), new Coordinate(x1, y1))\n }\n }\n static midPoint(p0, p1) {\n return new Coordinate((p0.x + p1.x) / 2, (p0.y + p1.y) / 2)\n }\n minX() {\n return Math.min(this.p0.x, this.p1.x)\n }\n orientationIndex() {\n if (arguments[0] instanceof LineSegment) {\n const seg = arguments[0]\n const orient0 = Orientation.index(this.p0, this.p1, seg.p0)\n const orient1 = Orientation.index(this.p0, this.p1, seg.p1)\n if (orient0 >= 0 && orient1 >= 0) return Math.max(orient0, orient1)\n if (orient0 <= 0 && orient1 <= 0) return Math.max(orient0, orient1)\n return 0\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return Orientation.index(this.p0, this.p1, p)\n }\n }\n toGeometry(geomFactory) {\n return geomFactory.createLineString([this.p0, this.p1])\n }\n isVertical() {\n return this.p0.x === this.p1.x\n }\n minY() {\n return Math.min(this.p0.y, this.p1.y)\n }\n midPoint() {\n return LineSegment.midPoint(this.p0, this.p1)\n }\n maxY() {\n return Math.max(this.p0.y, this.p1.y)\n }\n pointAlongOffset(segmentLengthFraction, offsetDistance) {\n const segx = this.p0.x + segmentLengthFraction * (this.p1.x - this.p0.x)\n const segy = this.p0.y + segmentLengthFraction * (this.p1.y - this.p0.y)\n const dx = this.p1.x - this.p0.x\n const dy = this.p1.y - this.p0.y\n const len = Math.sqrt(dx * dx + dy * dy)\n let ux = 0.0\n let uy = 0.0\n if (offsetDistance !== 0.0) {\n if (len <= 0.0) throw new IllegalStateException('Cannot compute offset from zero-length line segment')\n ux = offsetDistance * dx / len\n uy = offsetDistance * dy / len\n }\n const offsetx = segx - uy\n const offsety = segy + ux\n const coord = new Coordinate(offsetx, offsety)\n return coord\n }\n setCoordinates() {\n if (arguments.length === 1) {\n const ls = arguments[0]\n this.setCoordinates(ls.p0, ls.p1)\n } else if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n this.p0.x = p0.x\n this.p0.y = p0.y\n this.p1.x = p1.x\n this.p1.y = p1.y\n }\n }\n segmentFraction(inputPt) {\n let segFrac = this.projectionFactor(inputPt)\n if (segFrac < 0.0) segFrac = 0.0; else if (segFrac > 1.0 || Double.isNaN(segFrac)) segFrac = 1.0\n return segFrac\n }\n toString() {\n return 'LINESTRING( ' + this.p0.x + ' ' + this.p0.y + ', ' + this.p1.x + ' ' + this.p1.y + ')'\n }\n distance() {\n if (arguments[0] instanceof LineSegment) {\n const ls = arguments[0]\n return Distance.segmentToSegment(this.p0, this.p1, ls.p0, ls.p1)\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return Distance.pointToSegment(p, this.p0, this.p1)\n }\n }\n equals(o) {\n if (!(o instanceof LineSegment)) \n return false\n \n const other = o\n return this.p0.equals(other.p0) && this.p1.equals(other.p1)\n }\n intersection(line) {\n const li = new RobustLineIntersector()\n li.computeIntersection(this.p0, this.p1, line.p0, line.p1)\n if (li.hasIntersection()) return li.getIntersection(0)\n return null\n }\n project() {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n if (p.equals(this.p0) || p.equals(this.p1)) return new Coordinate(p)\n const r = this.projectionFactor(p)\n const coord = new Coordinate()\n coord.x = this.p0.x + r * (this.p1.x - this.p0.x)\n coord.y = this.p0.y + r * (this.p1.y - this.p0.y)\n return coord\n } else if (arguments[0] instanceof LineSegment) {\n const seg = arguments[0]\n const pf0 = this.projectionFactor(seg.p0)\n const pf1 = this.projectionFactor(seg.p1)\n if (pf0 >= 1.0 && pf1 >= 1.0) return null\n if (pf0 <= 0.0 && pf1 <= 0.0) return null\n let newp0 = this.project(seg.p0)\n if (pf0 < 0.0) newp0 = this.p0\n if (pf0 > 1.0) newp0 = this.p1\n let newp1 = this.project(seg.p1)\n if (pf1 < 0.0) newp1 = this.p0\n if (pf1 > 1.0) newp1 = this.p1\n return new LineSegment(newp0, newp1)\n }\n }\n normalize() {\n if (this.p1.compareTo(this.p0) < 0) this.reverse()\n }\n angle() {\n return Math.atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x)\n }\n getCoordinate(i) {\n if (i === 0) return this.p0\n return this.p1\n }\n distancePerpendicular(p) {\n return Distance.pointToLinePerpendicular(p, this.p0, this.p1)\n }\n closestPoint(p) {\n const factor = this.projectionFactor(p)\n if (factor > 0 && factor < 1) \n return this.project(p)\n \n const dist0 = this.p0.distance(p)\n const dist1 = this.p1.distance(p)\n if (dist0 < dist1) return this.p0\n return this.p1\n }\n projectionFactor(p) {\n if (p.equals(this.p0)) return 0.0\n if (p.equals(this.p1)) return 1.0\n const dx = this.p1.x - this.p0.x\n const dy = this.p1.y - this.p0.y\n const len = dx * dx + dy * dy\n if (len <= 0.0) return Double.NaN\n const r = ((p.x - this.p0.x) * dx + (p.y - this.p0.y) * dy) / len\n return r\n }\n closestPoints(line) {\n const intPt = this.intersection(line)\n if (intPt !== null) \n return [intPt, intPt]\n \n const closestPt = new Array(2).fill(null)\n let minDistance = Double.MAX_VALUE\n let dist = null\n const close00 = this.closestPoint(line.p0)\n minDistance = close00.distance(line.p0)\n closestPt[0] = close00\n closestPt[1] = line.p0\n const close01 = this.closestPoint(line.p1)\n dist = close01.distance(line.p1)\n if (dist < minDistance) {\n minDistance = dist\n closestPt[0] = close01\n closestPt[1] = line.p1\n }\n const close10 = line.closestPoint(this.p0)\n dist = close10.distance(this.p0)\n if (dist < minDistance) {\n minDistance = dist\n closestPt[0] = this.p0\n closestPt[1] = close10\n }\n const close11 = line.closestPoint(this.p1)\n dist = close11.distance(this.p1)\n if (dist < minDistance) {\n minDistance = dist\n closestPt[0] = this.p1\n closestPt[1] = close11\n }\n return closestPt\n }\n maxX() {\n return Math.max(this.p0.x, this.p1.x)\n }\n getLength() {\n return this.p0.distance(this.p1)\n }\n compareTo(o) {\n const other = o\n const comp0 = this.p0.compareTo(other.p0)\n if (comp0 !== 0) return comp0\n return this.p1.compareTo(other.p1)\n }\n reverse() {\n const temp = this.p0\n this.p0 = this.p1\n this.p1 = temp\n }\n equalsTopo(other) {\n return this.p0.equals(other.p0) && this.p1.equals(other.p1) || this.p0.equals(other.p1) && this.p1.equals(other.p0)\n }\n lineIntersection(line) {\n const intPt = Intersection.intersection(this.p0, this.p1, line.p0, line.p1)\n return intPt\n }\n isHorizontal() {\n return this.p0.y === this.p1.y\n }\n reflect(p) {\n const A = this.p1.getY() - this.p0.getY()\n const B = this.p0.getX() - this.p1.getX()\n const C = this.p0.getY() * (this.p1.getX() - this.p0.getX()) - this.p0.getX() * (this.p1.getY() - this.p0.getY())\n const A2plusB2 = A * A + B * B\n const A2subB2 = A * A - B * B\n const x = p.getX()\n const y = p.getY()\n const rx = (-A2subB2 * x - 2 * A * B * y - 2 * A * C) / A2plusB2\n const ry = (A2subB2 * y - 2 * A * B * x - 2 * B * C) / A2plusB2\n return new Coordinate(rx, ry)\n }\n pointAlong(segmentLengthFraction) {\n const coord = new Coordinate()\n coord.x = this.p0.x + segmentLengthFraction * (this.p1.x - this.p0.x)\n coord.y = this.p0.y + segmentLengthFraction * (this.p1.y - this.p0.y)\n return coord\n }\n hashCode() {\n let bits0 = Double.doubleToLongBits(this.p0.x)\n bits0 ^= Double.doubleToLongBits(this.p0.y) * 31\n const hash0 = Math.trunc(bits0) ^ Math.trunc(bits0 >> 32)\n let bits1 = Double.doubleToLongBits(this.p1.x)\n bits1 ^= Double.doubleToLongBits(this.p1.y) * 31\n const hash1 = Math.trunc(bits1) ^ Math.trunc(bits1 >> 32)\n return hash0 ^ hash1\n }\n get interfaces_() {\n return [Comparable, Serializable]\n }\n}\n","import LineSegment from '../../geom/LineSegment.js'\nexport default class MonotoneChainOverlapAction {\n constructor() {\n MonotoneChainOverlapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._overlapSeg1 = new LineSegment()\n this._overlapSeg2 = new LineSegment()\n }\n overlap() {\n if (arguments.length === 2) {\n const seg1 = arguments[0], seg2 = arguments[1]\n } else if (arguments.length === 4) {\n const mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3]\n mc1.getLineSegment(start1, this._overlapSeg1)\n mc2.getLineSegment(start2, this._overlapSeg2)\n this.overlap(this._overlapSeg1, this._overlapSeg2)\n }\n }\n}\n","import Envelope from '../../geom/Envelope.js'\nexport default class MonotoneChain {\n constructor() {\n MonotoneChain.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._start = null\n this._end = null\n this._env = null\n this._context = null\n this._id = null\n const pts = arguments[0], start = arguments[1], end = arguments[2], context = arguments[3]\n this._pts = pts\n this._start = start\n this._end = end\n this._context = context\n }\n computeOverlaps() {\n if (arguments.length === 2) {\n const mc = arguments[0], mco = arguments[1]\n this.computeOverlaps(this._start, this._end, mc, mc._start, mc._end, mco)\n } else if (arguments.length === 6) {\n const start0 = arguments[0], end0 = arguments[1], mc = arguments[2], start1 = arguments[3], end1 = arguments[4], mco = arguments[5]\n if (end0 - start0 === 1 && end1 - start1 === 1) {\n mco.overlap(this, start0, mc, start1)\n return null\n }\n if (!this.overlaps(start0, end0, mc, start1, end1)) return null\n const mid0 = Math.trunc((start0 + end0) / 2)\n const mid1 = Math.trunc((start1 + end1) / 2)\n if (start0 < mid0) {\n if (start1 < mid1) this.computeOverlaps(start0, mid0, mc, start1, mid1, mco)\n if (mid1 < end1) this.computeOverlaps(start0, mid0, mc, mid1, end1, mco)\n }\n if (mid0 < end0) {\n if (start1 < mid1) this.computeOverlaps(mid0, end0, mc, start1, mid1, mco)\n if (mid1 < end1) this.computeOverlaps(mid0, end0, mc, mid1, end1, mco)\n }\n }\n }\n setId(id) {\n this._id = id\n }\n select(searchEnv, mcs) {\n this.computeSelect(searchEnv, this._start, this._end, mcs)\n }\n getEnvelope() {\n if (this._env === null) {\n const p0 = this._pts[this._start]\n const p1 = this._pts[this._end]\n this._env = new Envelope(p0, p1)\n }\n return this._env\n }\n overlaps(start0, end0, mc, start1, end1) {\n return Envelope.intersects(this._pts[start0], this._pts[end0], mc._pts[start1], mc._pts[end1])\n }\n getEndIndex() {\n return this._end\n }\n getStartIndex() {\n return this._start\n }\n getContext() {\n return this._context\n }\n getId() {\n return this._id\n }\n getLineSegment(index, ls) {\n ls.p0 = this._pts[index]\n ls.p1 = this._pts[index + 1]\n }\n computeSelect(searchEnv, start0, end0, mcs) {\n const p0 = this._pts[start0]\n const p1 = this._pts[end0]\n if (end0 - start0 === 1) {\n mcs.select(this, start0)\n return null\n }\n if (!searchEnv.intersects(p0, p1)) return null\n const mid = Math.trunc((start0 + end0) / 2)\n if (start0 < mid) \n this.computeSelect(searchEnv, start0, mid, mcs)\n \n if (mid < end0) \n this.computeSelect(searchEnv, mid, end0, mcs)\n \n }\n getCoordinates() {\n const coord = new Array(this._end - this._start + 1).fill(null)\n let index = 0\n for (let i = this._start; i <= this._end; i++) \n coord[index++] = this._pts[i]\n \n return coord\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nexport default class Quadrant {\n static isNorthern(quad) {\n return quad === Quadrant.NE || quad === Quadrant.NW\n }\n static isOpposite(quad1, quad2) {\n if (quad1 === quad2) return false\n const diff = (quad1 - quad2 + 4) % 4\n if (diff === 2) return true\n return false\n }\n static commonHalfPlane(quad1, quad2) {\n if (quad1 === quad2) return quad1\n const diff = (quad1 - quad2 + 4) % 4\n if (diff === 2) return -1\n const min = quad1 < quad2 ? quad1 : quad2\n const max = quad1 > quad2 ? quad1 : quad2\n if (min === 0 && max === 3) return 3\n return min\n }\n static isInHalfPlane(quad, halfPlane) {\n if (halfPlane === Quadrant.SE) \n return quad === Quadrant.SE || quad === Quadrant.SW\n \n return quad === halfPlane || quad === halfPlane + 1\n }\n static quadrant() {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const dx = arguments[0], dy = arguments[1]\n if (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException('Cannot compute the quadrant for point ( ' + dx + ', ' + dy + ' )')\n if (dx >= 0.0) \n if (dy >= 0.0) return Quadrant.NE; else return Quadrant.SE\n else \n if (dy >= 0.0) return Quadrant.NW; else return Quadrant.SW\n \n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const p0 = arguments[0], p1 = arguments[1]\n if (p1.x === p0.x && p1.y === p0.y) throw new IllegalArgumentException('Cannot compute the quadrant for two identical points ' + p0)\n if (p1.x >= p0.x) \n if (p1.y >= p0.y) return Quadrant.NE; else return Quadrant.SE\n else \n if (p1.y >= p0.y) return Quadrant.NW; else return Quadrant.SW\n \n }\n }\n}\nQuadrant.NE = 0\nQuadrant.NW = 1\nQuadrant.SW = 2\nQuadrant.SE = 3\n","import MonotoneChain from './MonotoneChain.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Quadrant from '../../geomgraph/Quadrant.js'\nexport default class MonotoneChainBuilder {\n static findChainEnd(pts, start) {\n let safeStart = start\n while (safeStart < pts.length - 1 && pts[safeStart].equals2D(pts[safeStart + 1])) \n safeStart++\n \n if (safeStart >= pts.length - 1) \n return pts.length - 1\n \n const chainQuad = Quadrant.quadrant(pts[safeStart], pts[safeStart + 1])\n let last = start + 1\n while (last < pts.length) {\n if (!pts[last - 1].equals2D(pts[last])) {\n const quad = Quadrant.quadrant(pts[last - 1], pts[last])\n if (quad !== chainQuad) break\n }\n last++\n }\n return last - 1\n }\n static getChains() {\n if (arguments.length === 1) {\n const pts = arguments[0]\n return MonotoneChainBuilder.getChains(pts, null)\n } else if (arguments.length === 2) {\n const pts = arguments[0], context = arguments[1]\n const mcList = new ArrayList()\n let chainStart = 0\n do {\n const chainEnd = MonotoneChainBuilder.findChainEnd(pts, chainStart)\n const mc = new MonotoneChain(pts, chainStart, chainEnd, context)\n mcList.add(mc)\n chainStart = chainEnd\n } while (chainStart < pts.length - 1)\n return mcList\n }\n }\n}\n","import Noder from './Noder.js'\nexport default class SinglePassNoder {\n constructor() {\n SinglePassNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._segInt = null\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const segInt = arguments[0]\n this.setSegmentIntersector(segInt)\n }\n }\n setSegmentIntersector(segInt) {\n this._segInt = segInt\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import STRtree from '../index/strtree/STRtree.js'\nimport NodedSegmentString from './NodedSegmentString.js'\nimport MonotoneChainOverlapAction from '../index/chain/MonotoneChainOverlapAction.js'\nimport MonotoneChainBuilder from '../index/chain/MonotoneChainBuilder.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport SinglePassNoder from './SinglePassNoder.js'\nexport default class MCIndexNoder extends SinglePassNoder {\n constructor() {\n super()\n MCIndexNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._monoChains = new ArrayList()\n this._index = new STRtree()\n this._idCounter = 0\n this._nodedSegStrings = null\n this._nOverlaps = 0\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const si = arguments[0]\n SinglePassNoder.constructor_.call(this, si)\n }\n }\n getMonotoneChains() {\n return this._monoChains\n }\n getNodedSubstrings() {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n getIndex() {\n return this._index\n }\n add(segStr) {\n const segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr)\n for (let i = segChains.iterator(); i.hasNext(); ) {\n const mc = i.next()\n mc.setId(this._idCounter++)\n this._index.insert(mc.getEnvelope(), mc)\n this._monoChains.add(mc)\n }\n }\n computeNodes(inputSegStrings) {\n this._nodedSegStrings = inputSegStrings\n for (let i = inputSegStrings.iterator(); i.hasNext(); ) \n this.add(i.next())\n \n this.intersectChains()\n }\n intersectChains() {\n const overlapAction = new SegmentOverlapAction(this._segInt)\n for (let i = this._monoChains.iterator(); i.hasNext(); ) {\n const queryChain = i.next()\n const overlapChains = this._index.query(queryChain.getEnvelope())\n for (let j = overlapChains.iterator(); j.hasNext(); ) {\n const testChain = j.next()\n if (testChain.getId() > queryChain.getId()) {\n queryChain.computeOverlaps(testChain, overlapAction)\n this._nOverlaps++\n }\n if (this._segInt.isDone()) return null\n }\n }\n }\n}\nclass SegmentOverlapAction extends MonotoneChainOverlapAction {\n constructor() {\n super()\n SegmentOverlapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._si = null\n const si = arguments[0]\n this._si = si\n }\n overlap() {\n if (arguments.length === 4) {\n const mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3]\n const ss1 = mc1.getContext()\n const ss2 = mc2.getContext()\n this._si.processIntersections(ss1, start1, ss2, start2)\n } else {\n return super.overlap.apply(this, arguments)\n }\n }\n}\nMCIndexNoder.SegmentOverlapAction = SegmentOverlapAction\n","import Coordinate from '../../geom/Coordinate.js'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException.js'\nimport Envelope from '../../geom/Envelope.js'\nimport Assert from '../../util/Assert.js'\nexport default class HotPixel {\n constructor() {\n HotPixel.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._pt = null\n this._originalPt = null\n this._ptScaled = null\n this._p0Scaled = null\n this._p1Scaled = null\n this._scaleFactor = null\n this._minx = null\n this._maxx = null\n this._miny = null\n this._maxy = null\n this._corner = new Array(4).fill(null)\n this._safeEnv = null\n const pt = arguments[0], scaleFactor = arguments[1], li = arguments[2]\n this._originalPt = pt\n this._pt = pt\n this._scaleFactor = scaleFactor\n this._li = li\n if (scaleFactor <= 0) throw new IllegalArgumentException('Scale factor must be non-zero')\n if (scaleFactor !== 1.0) {\n this._pt = new Coordinate(this.scale(pt.x), this.scale(pt.y))\n this._p0Scaled = new Coordinate()\n this._p1Scaled = new Coordinate()\n }\n this.initCorners(this._pt)\n }\n intersectsScaled(p0, p1) {\n const segMinx = Math.min(p0.x, p1.x)\n const segMaxx = Math.max(p0.x, p1.x)\n const segMiny = Math.min(p0.y, p1.y)\n const segMaxy = Math.max(p0.y, p1.y)\n const isOutsidePixelEnv = this._maxx < segMinx || this._minx > segMaxx || this._maxy < segMiny || this._miny > segMaxy\n if (isOutsidePixelEnv) return false\n const intersects = this.intersectsToleranceSquare(p0, p1)\n Assert.isTrue(!(isOutsidePixelEnv && intersects), 'Found bad envelope test')\n return intersects\n }\n copyScaled(p, pScaled) {\n pScaled.x = this.scale(p.x)\n pScaled.y = this.scale(p.y)\n }\n getSafeEnvelope() {\n if (this._safeEnv === null) {\n const safeTolerance = HotPixel.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor\n this._safeEnv = new Envelope(this._originalPt.x - safeTolerance, this._originalPt.x + safeTolerance, this._originalPt.y - safeTolerance, this._originalPt.y + safeTolerance)\n }\n return this._safeEnv\n }\n intersectsPixelClosure(p0, p1) {\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.hasIntersection()) return true\n return false\n }\n intersectsToleranceSquare(p0, p1) {\n let intersectsLeft = false\n let intersectsBottom = false\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.isProper()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsLeft = true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsBottom = true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.isProper()) return true\n if (intersectsLeft && intersectsBottom) return true\n if (p0.equals(this._pt)) return true\n if (p1.equals(this._pt)) return true\n return false\n }\n addSnappedNode(segStr, segIndex) {\n const p0 = segStr.getCoordinate(segIndex)\n const p1 = segStr.getCoordinate(segIndex + 1)\n if (this.intersects(p0, p1)) {\n segStr.addIntersection(this.getCoordinate(), segIndex)\n return true\n }\n return false\n }\n initCorners(pt) {\n const tolerance = 0.5\n this._minx = pt.x - tolerance\n this._maxx = pt.x + tolerance\n this._miny = pt.y - tolerance\n this._maxy = pt.y + tolerance\n this._corner[0] = new Coordinate(this._maxx, this._maxy)\n this._corner[1] = new Coordinate(this._minx, this._maxy)\n this._corner[2] = new Coordinate(this._minx, this._miny)\n this._corner[3] = new Coordinate(this._maxx, this._miny)\n }\n intersects(p0, p1) {\n if (this._scaleFactor === 1.0) return this.intersectsScaled(p0, p1)\n this.copyScaled(p0, this._p0Scaled)\n this.copyScaled(p1, this._p1Scaled)\n return this.intersectsScaled(this._p0Scaled, this._p1Scaled)\n }\n scale(val) {\n return Math.round(val * this._scaleFactor)\n }\n getCoordinate() {\n return this._originalPt\n }\n}\nHotPixel.SAFE_ENV_EXPANSION_FACTOR = 0.75\n","import LineSegment from '../../geom/LineSegment.js'\nexport default class MonotoneChainSelectAction {\n constructor() {\n MonotoneChainSelectAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.selectedSegment = new LineSegment()\n }\n select() {\n if (arguments.length === 1) {\n const seg = arguments[0]\n } else if (arguments.length === 2) {\n const mc = arguments[0], startIndex = arguments[1]\n mc.getLineSegment(startIndex, this.selectedSegment)\n this.select(this.selectedSegment)\n }\n }\n}\n","import MonotoneChainSelectAction from '../../index/chain/MonotoneChainSelectAction.js'\nimport MonotoneChain from '../../index/chain/MonotoneChain.js'\nimport ItemVisitor from '../../index/ItemVisitor.js'\nexport default class MCIndexPointSnapper {\n constructor() {\n MCIndexPointSnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._index = null\n const index = arguments[0]\n this._index = index\n }\n snap() {\n if (arguments.length === 1) {\n const hotPixel = arguments[0]\n return this.snap(hotPixel, null, -1)\n } else if (arguments.length === 3) {\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n const pixelEnv = hotPixel.getSafeEnvelope()\n const hotPixelSnapAction = new HotPixelSnapAction(hotPixel, parentEdge, hotPixelVertexIndex)\n this._index.query(pixelEnv, new (class {\n get interfaces_() {\n return [ItemVisitor]\n }\n visitItem(item) {\n const testChain = item\n testChain.select(pixelEnv, hotPixelSnapAction)\n }\n })())\n return hotPixelSnapAction.isNodeAdded()\n }\n }\n}\nclass HotPixelSnapAction extends MonotoneChainSelectAction {\n constructor() {\n super()\n HotPixelSnapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hotPixel = null\n this._parentEdge = null\n this._hotPixelVertexIndex = null\n this._isNodeAdded = false\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n this._hotPixel = hotPixel\n this._parentEdge = parentEdge\n this._hotPixelVertexIndex = hotPixelVertexIndex\n }\n select() {\n if (arguments.length === 2 && (Number.isInteger(arguments[1]) && arguments[0] instanceof MonotoneChain)) {\n const mc = arguments[0], startIndex = arguments[1]\n const ss = mc.getContext()\n if (this._parentEdge === ss) \n if (startIndex === this._hotPixelVertexIndex || startIndex + 1 === this._hotPixelVertexIndex) return null\n \n this._isNodeAdded |= this._hotPixel.addSnappedNode(ss, startIndex)\n } else {\n return super.select.apply(this, arguments)\n }\n }\n isNodeAdded() {\n return this._isNodeAdded\n }\n}\nMCIndexPointSnapper.HotPixelSnapAction = HotPixelSnapAction\n","export default class SegmentIntersector {\n isDone() {}\n processIntersections(e0, segIndex0, e1, segIndex1) {}\n}\n","import SegmentIntersector from './SegmentIntersector.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nexport default class InteriorIntersectionFinderAdder {\n constructor() {\n InteriorIntersectionFinderAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._interiorIntersections = null\n const li = arguments[0]\n this._li = li\n this._interiorIntersections = new ArrayList()\n }\n isDone() {\n return false\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isInteriorIntersection()) {\n for (let intIndex = 0; intIndex < this._li.getIntersectionNum(); intIndex++) \n this._interiorIntersections.add(this._li.getIntersection(intIndex))\n \n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n }\n \n }\n getInteriorIntersections() {\n return this._interiorIntersections\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import NodingValidator from '../NodingValidator.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport MCIndexNoder from '../MCIndexNoder.js'\nimport NodedSegmentString from '../NodedSegmentString.js'\nimport HotPixel from './HotPixel.js'\nimport Exception from '../../../../../java/lang/Exception.js'\nimport MCIndexPointSnapper from './MCIndexPointSnapper.js'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector.js'\nimport InteriorIntersectionFinderAdder from '../InteriorIntersectionFinderAdder.js'\nimport Collection from '../../../../../java/util/Collection.js'\nimport Noder from '../Noder.js'\nexport default class MCIndexSnapRounder {\n constructor() {\n MCIndexSnapRounder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pm = null\n this._li = null\n this._scaleFactor = null\n this._noder = null\n this._pointSnapper = null\n this._nodedSegStrings = null\n const pm = arguments[0]\n this._pm = pm\n this._li = new RobustLineIntersector()\n this._li.setPrecisionModel(pm)\n this._scaleFactor = pm.getScale()\n }\n checkCorrectness(inputSegmentStrings) {\n const resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings)\n const nv = new NodingValidator(resultSegStrings)\n try {\n nv.checkValid()\n } catch (ex) {\n if (ex instanceof Exception) \n ex.printStackTrace()\n else throw ex\n } finally {}\n }\n getNodedSubstrings() {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n snapRound(segStrings, li) {\n const intersections = this.findInteriorIntersections(segStrings, li)\n this.computeIntersectionSnaps(intersections)\n this.computeVertexSnaps(segStrings)\n }\n findInteriorIntersections(segStrings, li) {\n const intFinderAdder = new InteriorIntersectionFinderAdder(li)\n this._noder.setSegmentIntersector(intFinderAdder)\n this._noder.computeNodes(segStrings)\n return intFinderAdder.getInteriorIntersections()\n }\n computeVertexSnaps() {\n if (hasInterface(arguments[0], Collection)) {\n const edges = arguments[0]\n for (let i0 = edges.iterator(); i0.hasNext(); ) {\n const edge0 = i0.next()\n this.computeVertexSnaps(edge0)\n }\n } else if (arguments[0] instanceof NodedSegmentString) {\n const e = arguments[0]\n const pts0 = e.getCoordinates()\n for (let i = 0; i < pts0.length; i++) {\n const hotPixel = new HotPixel(pts0[i], this._scaleFactor, this._li)\n const isNodeAdded = this._pointSnapper.snap(hotPixel, e, i)\n if (isNodeAdded) \n e.addIntersection(pts0[i], i)\n \n }\n }\n }\n computeNodes(inputSegmentStrings) {\n this._nodedSegStrings = inputSegmentStrings\n this._noder = new MCIndexNoder()\n this._pointSnapper = new MCIndexPointSnapper(this._noder.getIndex())\n this.snapRound(inputSegmentStrings, this._li)\n }\n computeIntersectionSnaps(snapPts) {\n for (let it = snapPts.iterator(); it.hasNext(); ) {\n const snapPt = it.next()\n const hotPixel = new HotPixel(snapPt, this._scaleFactor, this._li)\n this._pointSnapper.snap(hotPixel)\n }\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nexport default class Location {\n static toLocationSymbol(locationValue) {\n switch (locationValue) {\n case Location.EXTERIOR:\n return 'e'\n case Location.BOUNDARY:\n return 'b'\n case Location.INTERIOR:\n return 'i'\n case Location.NONE:\n return '-'\n }\n throw new IllegalArgumentException('Unknown location value: ' + locationValue)\n }\n}\nLocation.INTERIOR = 0\nLocation.BOUNDARY = 1\nLocation.EXTERIOR = 2\nLocation.NONE = -1\n","export default class Position {\n static opposite(position) {\n if (position === Position.LEFT) return Position.RIGHT\n if (position === Position.RIGHT) return Position.LEFT\n return position\n }\n}\nPosition.ON = 0\nPosition.LEFT = 1\nPosition.RIGHT = 2\n","import Exception from '../lang/Exception.js'\n\nexport default class EmptyStackException extends Exception {\n constructor(message) {\n super(message)\n this.name = Object.keys({ EmptyStackException })[0]\n }\n}\n","import EmptyStackException from './EmptyStackException.js'\nimport IndexOutOfBoundsException from '../lang/IndexOutOfBoundsException.js'\nimport List from './List.js'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Stack.html\n */\nexport default class Stack extends List {\n constructor() {\n super()\n this.array = []\n }\n\n add(e) {\n this.array.push(e)\n return true\n }\n\n get(index) {\n if (index < 0 || index >= this.size())\n throw new IndexOutOfBoundsException()\n return this.array[index]\n }\n\n /**\n * Pushes an item onto the top of this stack.\n * @param {Object} e\n * @return {Object}\n */\n push(e) {\n this.array.push(e)\n return e\n }\n\n /**\n * Removes the object at the top of this stack and returns that object as the value of this function.\n * @return {Object}\n */\n pop() {\n if (this.array.length === 0)\n throw new EmptyStackException()\n return this.array.pop()\n }\n\n /**\n * Looks at the object at the top of this stack without removing it from the\n * stack.\n * @return {Object}\n */\n peek() {\n if (this.array.length === 0)\n throw new EmptyStackException()\n return this.array[this.array.length - 1]\n }\n\n /**\n * Tests if this stack is empty.\n * @return {boolean} true if and only if this stack contains no items; false\n * otherwise.\n */\n empty() {\n return this.array.length === 0\n }\n\n /**\n * @return {boolean}\n */\n isEmpty() {\n return this.empty()\n }\n\n /**\n * Returns the 1-based position where an object is on this stack. If the object\n * o occurs as an item in this stack, this method returns the distance from the\n * top of the stack of the occurrence nearest the top of the stack; the topmost\n * item on the stack is considered to be at distance 1. The equals method is\n * used to compare o to the items in this stack.\n *\n * NOTE: does not currently actually use equals. (=== is used)\n *\n * @param {Object} o\n * @return {number} the 1-based position from the top of the stack where the\n * object is located; the return value -1 indicates that the object is\n * not on the stack.\n */\n search(o) {\n return this.array.indexOf(o)\n }\n\n /**\n * @return {number}\n */\n size() {\n return this.array.length\n }\n\n /**\n * @return {Array}\n */\n toArray() {\n return this.array.slice()\n }\n}\n","import Position from '../../geomgraph/Position.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Assert from '../../util/Assert.js'\nexport default class RightmostEdgeFinder {\n constructor() {\n RightmostEdgeFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._minIndex = -1\n this._minCoord = null\n this._minDe = null\n this._orientedDe = null\n }\n getCoordinate() {\n return this._minCoord\n }\n getRightmostSide(de, index) {\n let side = this.getRightmostSideOfSegment(de, index)\n if (side < 0) side = this.getRightmostSideOfSegment(de, index - 1)\n if (side < 0) {\n this._minCoord = null\n this.checkForRightmostCoordinate(de)\n }\n return side\n }\n findRightmostEdgeAtVertex() {\n const pts = this._minDe.getEdge().getCoordinates()\n Assert.isTrue(this._minIndex > 0 && this._minIndex < pts.length, 'rightmost point expected to be interior vertex of edge')\n const pPrev = pts[this._minIndex - 1]\n const pNext = pts[this._minIndex + 1]\n const orientation = Orientation.index(this._minCoord, pNext, pPrev)\n let usePrev = false\n if (pPrev.y < this._minCoord.y && pNext.y < this._minCoord.y && orientation === Orientation.COUNTERCLOCKWISE) \n usePrev = true\n else if (pPrev.y > this._minCoord.y && pNext.y > this._minCoord.y && orientation === Orientation.CLOCKWISE) \n usePrev = true\n \n if (usePrev) \n this._minIndex = this._minIndex - 1\n \n }\n getRightmostSideOfSegment(de, i) {\n const e = de.getEdge()\n const coord = e.getCoordinates()\n if (i < 0 || i + 1 >= coord.length) return -1\n if (coord[i].y === coord[i + 1].y) return -1\n let pos = Position.LEFT\n if (coord[i].y < coord[i + 1].y) pos = Position.RIGHT\n return pos\n }\n getEdge() {\n return this._orientedDe\n }\n checkForRightmostCoordinate(de) {\n const coord = de.getEdge().getCoordinates()\n for (let i = 0; i < coord.length - 1; i++) \n if (this._minCoord === null || coord[i].x > this._minCoord.x) {\n this._minDe = de\n this._minIndex = i\n this._minCoord = coord[i]\n }\n \n }\n findRightmostEdgeAtNode() {\n const node = this._minDe.getNode()\n const star = node.getEdges()\n this._minDe = star.getRightmostEdge()\n if (!this._minDe.isForward()) {\n this._minDe = this._minDe.getSym()\n this._minIndex = this._minDe.getEdge().getCoordinates().length - 1\n }\n }\n findEdge(dirEdgeList) {\n for (let i = dirEdgeList.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.checkForRightmostCoordinate(de)\n }\n Assert.isTrue(this._minIndex !== 0 || this._minCoord.equals(this._minDe.getCoordinate()), 'inconsistency in rightmost processing')\n if (this._minIndex === 0) \n this.findRightmostEdgeAtNode()\n else \n this.findRightmostEdgeAtVertex()\n \n this._orientedDe = this._minDe\n const rightmostSide = this.getRightmostSide(this._minDe, this._minIndex)\n if (rightmostSide === Position.LEFT) \n this._orientedDe = this._minDe.getSym()\n \n }\n}\n","export default class LinkedList {\n constructor() {\n this.array = []\n }\n\n addLast(e) {\n this.array.push(e)\n }\n\n removeFirst() {\n return this.array.shift()\n }\n\n isEmpty() {\n return this.array.length === 0\n }\n}\n","import HashSet from '../../../../../java/util/HashSet.js'\nimport Position from '../../geomgraph/Position.js'\nimport Stack from '../../../../../java/util/Stack.js'\nimport RightmostEdgeFinder from './RightmostEdgeFinder.js'\nimport TopologyException from '../../geom/TopologyException.js'\nimport LinkedList from '../../../../../java/util/LinkedList.js'\nimport Comparable from '../../../../../java/lang/Comparable.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Envelope from '../../geom/Envelope.js'\nexport default class BufferSubgraph {\n constructor() {\n BufferSubgraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._finder = null\n this._dirEdgeList = new ArrayList()\n this._nodes = new ArrayList()\n this._rightMostCoord = null\n this._env = null\n this._finder = new RightmostEdgeFinder()\n }\n clearVisitedEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n de.setVisited(false)\n }\n }\n compareTo(o) {\n const graph = o\n if (this._rightMostCoord.x < graph._rightMostCoord.x) \n return -1\n \n if (this._rightMostCoord.x > graph._rightMostCoord.x) \n return 1\n \n return 0\n }\n getEnvelope() {\n if (this._env === null) {\n const edgeEnv = new Envelope()\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const dirEdge = it.next()\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) \n edgeEnv.expandToInclude(pts[i])\n \n }\n this._env = edgeEnv\n }\n return this._env\n }\n addReachable(startNode) {\n const nodeStack = new Stack()\n nodeStack.add(startNode)\n while (!nodeStack.empty()) {\n const node = nodeStack.pop()\n this.add(node, nodeStack)\n }\n }\n copySymDepths(de) {\n const sym = de.getSym()\n sym.setDepth(Position.LEFT, de.getDepth(Position.RIGHT))\n sym.setDepth(Position.RIGHT, de.getDepth(Position.LEFT))\n }\n add(node, nodeStack) {\n node.setVisited(true)\n this._nodes.add(node)\n for (let i = node.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n this._dirEdgeList.add(de)\n const sym = de.getSym()\n const symNode = sym.getNode()\n if (!symNode.isVisited()) nodeStack.push(symNode)\n }\n }\n getRightmostCoordinate() {\n return this._rightMostCoord\n }\n computeNodeDepth(n) {\n let startEdge = null\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isVisited() || de.getSym().isVisited()) {\n startEdge = de\n break\n }\n }\n if (startEdge === null) throw new TopologyException('unable to find edge to compute depths at ' + n.getCoordinate())\n n.getEdges().computeDepths(startEdge)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setVisited(true)\n this.copySymDepths(de)\n }\n }\n computeDepth(outsideDepth) {\n this.clearVisitedEdges()\n const de = this._finder.getEdge()\n const n = de.getNode()\n const label = de.getLabel()\n de.setEdgeDepths(Position.RIGHT, outsideDepth)\n this.copySymDepths(de)\n this.computeDepths(de)\n }\n create(node) {\n this.addReachable(node)\n this._finder.findEdge(this._dirEdgeList)\n this._rightMostCoord = this._finder.getCoordinate()\n }\n findResultEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getDepth(Position.RIGHT) >= 1 && de.getDepth(Position.LEFT) <= 0 && !de.isInteriorAreaEdge()) \n de.setInResult(true)\n \n }\n }\n computeDepths(startEdge) {\n const nodesVisited = new HashSet()\n const nodeQueue = new LinkedList()\n const startNode = startEdge.getNode()\n nodeQueue.addLast(startNode)\n nodesVisited.add(startNode)\n startEdge.setVisited(true)\n while (!nodeQueue.isEmpty()) {\n const n = nodeQueue.removeFirst()\n nodesVisited.add(n)\n this.computeNodeDepth(n)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n const sym = de.getSym()\n if (sym.isVisited()) continue\n const adjNode = sym.getNode()\n if (!nodesVisited.contains(adjNode)) {\n nodeQueue.addLast(adjNode)\n nodesVisited.add(adjNode)\n }\n }\n }\n }\n getNodes() {\n return this._nodes\n }\n getDirectedEdges() {\n return this._dirEdgeList\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import CoordinateList from '../../geom/CoordinateList.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Distance from '../../algorithm/Distance.js'\nexport default class BufferInputLineSimplifier {\n constructor() {\n BufferInputLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputLine = null\n this._distanceTol = null\n this._isDeleted = null\n this._angleOrientation = Orientation.COUNTERCLOCKWISE\n const inputLine = arguments[0]\n this._inputLine = inputLine\n }\n static simplify(inputLine, distanceTol) {\n const simp = new BufferInputLineSimplifier(inputLine)\n return simp.simplify(distanceTol)\n }\n isDeletable(i0, i1, i2, distanceTol) {\n const p0 = this._inputLine[i0]\n const p1 = this._inputLine[i1]\n const p2 = this._inputLine[i2]\n if (!this.isConcave(p0, p1, p2)) return false\n if (!this.isShallow(p0, p1, p2, distanceTol)) return false\n return this.isShallowSampled(p0, p1, i0, i2, distanceTol)\n }\n deleteShallowConcavities() {\n let index = 1\n let midIndex = this.findNextNonDeletedIndex(index)\n let lastIndex = this.findNextNonDeletedIndex(midIndex)\n let isChanged = false\n while (lastIndex < this._inputLine.length) {\n let isMiddleVertexDeleted = false\n if (this.isDeletable(index, midIndex, lastIndex, this._distanceTol)) {\n this._isDeleted[midIndex] = BufferInputLineSimplifier.DELETE\n isMiddleVertexDeleted = true\n isChanged = true\n }\n if (isMiddleVertexDeleted) index = lastIndex; else index = midIndex\n midIndex = this.findNextNonDeletedIndex(index)\n lastIndex = this.findNextNonDeletedIndex(midIndex)\n }\n return isChanged\n }\n isShallowConcavity(p0, p1, p2, distanceTol) {\n const orientation = Orientation.index(p0, p1, p2)\n const isAngleToSimplify = orientation === this._angleOrientation\n if (!isAngleToSimplify) return false\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n isShallowSampled(p0, p2, i0, i2, distanceTol) {\n let inc = Math.trunc((i2 - i0) / BufferInputLineSimplifier.NUM_PTS_TO_CHECK)\n if (inc <= 0) inc = 1\n for (let i = i0; i < i2; i += inc) \n if (!this.isShallow(p0, p2, this._inputLine[i], distanceTol)) return false\n \n return true\n }\n isConcave(p0, p1, p2) {\n const orientation = Orientation.index(p0, p1, p2)\n const isConcave = orientation === this._angleOrientation\n return isConcave\n }\n simplify(distanceTol) {\n this._distanceTol = Math.abs(distanceTol)\n if (distanceTol < 0) this._angleOrientation = Orientation.CLOCKWISE\n this._isDeleted = new Array(this._inputLine.length).fill(null)\n let isChanged = false\n do \n isChanged = this.deleteShallowConcavities()\n while (isChanged)\n return this.collapseLine()\n }\n findNextNonDeletedIndex(index) {\n let next = index + 1\n while (next < this._inputLine.length && this._isDeleted[next] === BufferInputLineSimplifier.DELETE) next++\n return next\n }\n isShallow(p0, p1, p2, distanceTol) {\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n collapseLine() {\n const coordList = new CoordinateList()\n for (let i = 0; i < this._inputLine.length; i++) \n if (this._isDeleted[i] !== BufferInputLineSimplifier.DELETE) coordList.add(this._inputLine[i])\n \n return coordList.toCoordinateArray()\n }\n}\nBufferInputLineSimplifier.INIT = 0\nBufferInputLineSimplifier.DELETE = 1\nBufferInputLineSimplifier.KEEP = 1\nBufferInputLineSimplifier.NUM_PTS_TO_CHECK = 10\n","import GeometryFactory from '../../geom/GeometryFactory.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nexport default class OffsetSegmentString {\n constructor() {\n OffsetSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ptList = null\n this._precisionModel = null\n this._minimimVertexDistance = 0.0\n this._ptList = new ArrayList()\n }\n getCoordinates() {\n const coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE)\n return coord\n }\n setPrecisionModel(precisionModel) {\n this._precisionModel = precisionModel\n }\n addPt(pt) {\n const bufPt = new Coordinate(pt)\n this._precisionModel.makePrecise(bufPt)\n if (this.isRedundant(bufPt)) return null\n this._ptList.add(bufPt)\n }\n reverse() {}\n addPts(pt, isForward) {\n if (isForward) \n for (let i = 0; i < pt.length; i++) \n this.addPt(pt[i])\n \n else \n for (let i = pt.length - 1; i >= 0; i--) \n this.addPt(pt[i])\n \n \n }\n isRedundant(pt) {\n if (this._ptList.size() < 1) return false\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n const ptDist = pt.distance(lastPt)\n if (ptDist < this._minimimVertexDistance) return true\n return false\n }\n toString() {\n const fact = new GeometryFactory()\n const line = fact.createLineString(this.getCoordinates())\n return line.toString()\n }\n closeRing() {\n if (this._ptList.size() < 1) return null\n const startPt = new Coordinate(this._ptList.get(0))\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n if (startPt.equals(lastPt)) return null\n this._ptList.add(startPt)\n }\n setMinimumVertexDistance(minimimVertexDistance) {\n this._minimimVertexDistance = minimimVertexDistance\n }\n}\nOffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null)\n","import Orientation from './Orientation.js'\nexport default class Angle {\n static toDegrees(radians) {\n return radians * 180 / Math.PI\n }\n static isAcute(p0, p1, p2) {\n const dx0 = p0.x - p1.x\n const dy0 = p0.y - p1.y\n const dx1 = p2.x - p1.x\n const dy1 = p2.y - p1.y\n const dotprod = dx0 * dx1 + dy0 * dy1\n return dotprod > 0\n }\n static isObtuse(p0, p1, p2) {\n const dx0 = p0.x - p1.x\n const dy0 = p0.y - p1.y\n const dx1 = p2.x - p1.x\n const dy1 = p2.y - p1.y\n const dotprod = dx0 * dx1 + dy0 * dy1\n return dotprod < 0\n }\n static interiorAngle(p0, p1, p2) {\n const anglePrev = Angle.angle(p1, p0)\n const angleNext = Angle.angle(p1, p2)\n return Math.abs(angleNext - anglePrev)\n }\n static normalizePositive(angle) {\n if (angle < 0.0) {\n while (angle < 0.0) angle += Angle.PI_TIMES_2\n if (angle >= Angle.PI_TIMES_2) angle = 0.0\n } else {\n while (angle >= Angle.PI_TIMES_2) angle -= Angle.PI_TIMES_2\n if (angle < 0.0) angle = 0.0\n }\n return angle\n }\n static angleBetween(tip1, tail, tip2) {\n const a1 = Angle.angle(tail, tip1)\n const a2 = Angle.angle(tail, tip2)\n return Angle.diff(a1, a2)\n }\n static diff(ang1, ang2) {\n let delAngle = null\n if (ang1 < ang2) \n delAngle = ang2 - ang1\n else \n delAngle = ang1 - ang2\n \n if (delAngle > Math.PI) \n delAngle = 2 * Math.PI - delAngle\n \n return delAngle\n }\n static toRadians(angleDegrees) {\n return angleDegrees * Math.PI / 180.0\n }\n static normalize(angle) {\n while (angle > Math.PI) angle -= Angle.PI_TIMES_2\n while (angle <= -Math.PI) angle += Angle.PI_TIMES_2\n return angle\n }\n static angle() {\n if (arguments.length === 1) {\n const p = arguments[0]\n return Math.atan2(p.y, p.x)\n } else if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n return Math.atan2(dy, dx)\n }\n }\n static getTurn(ang1, ang2) {\n const crossproduct = Math.sin(ang2 - ang1)\n if (crossproduct > 0) \n return Angle.COUNTERCLOCKWISE\n \n if (crossproduct < 0) \n return Angle.CLOCKWISE\n \n return Angle.NONE\n }\n static angleBetweenOriented(tip1, tail, tip2) {\n const a1 = Angle.angle(tail, tip1)\n const a2 = Angle.angle(tail, tip2)\n const angDel = a2 - a1\n if (angDel <= -Math.PI) return angDel + Angle.PI_TIMES_2\n if (angDel > Math.PI) return angDel - Angle.PI_TIMES_2\n return angDel\n }\n}\nAngle.PI_TIMES_2 = 2.0 * Math.PI\nAngle.PI_OVER_2 = Math.PI / 2.0\nAngle.PI_OVER_4 = Math.PI / 4.0\nAngle.COUNTERCLOCKWISE = Orientation.COUNTERCLOCKWISE\nAngle.CLOCKWISE = Orientation.CLOCKWISE\nAngle.NONE = Orientation.COLLINEAR\n","import BufferParameters from './BufferParameters.js'\nimport Position from '../../geomgraph/Position.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport LineSegment from '../../geom/LineSegment.js'\nimport OffsetSegmentString from './OffsetSegmentString.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Intersection from '../../algorithm/Intersection.js'\nimport Angle from '../../algorithm/Angle.js'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector.js'\nexport default class OffsetSegmentGenerator {\n constructor() {\n OffsetSegmentGenerator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._maxCurveSegmentError = 0.0\n this._filletAngleQuantum = null\n this._closingSegLengthFactor = 1\n this._segList = null\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n this._li = null\n this._s0 = null\n this._s1 = null\n this._s2 = null\n this._seg0 = new LineSegment()\n this._seg1 = new LineSegment()\n this._offset0 = new LineSegment()\n this._offset1 = new LineSegment()\n this._side = 0\n this._hasNarrowConcaveAngle = false\n const precisionModel = arguments[0], bufParams = arguments[1], distance = arguments[2]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n this._li = new RobustLineIntersector()\n this._filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments()\n if (bufParams.getQuadrantSegments() >= 8 && bufParams.getJoinStyle() === BufferParameters.JOIN_ROUND) this._closingSegLengthFactor = OffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR\n this.init(distance)\n }\n getCoordinates() {\n const pts = this._segList.getCoordinates()\n return pts\n }\n addMitreJoin(p, offset0, offset1, distance) {\n const intPt = Intersection.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1)\n if (intPt !== null) {\n const mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance)\n if (mitreRatio <= this._bufParams.getMitreLimit()) {\n this._segList.addPt(intPt)\n return null\n }\n }\n this.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit())\n }\n addLastSegment() {\n this._segList.addPt(this._offset1.p1)\n }\n initSideSegments(s1, s2, side) {\n this._s1 = s1\n this._s2 = s2\n this._side = side\n this._seg1.setCoordinates(s1, s2)\n this.computeOffsetSegment(this._seg1, side, this._distance, this._offset1)\n }\n addLimitedMitreJoin(offset0, offset1, distance, mitreLimit) {\n const basePt = this._seg0.p1\n const ang0 = Angle.angle(basePt, this._seg0.p0)\n const angDiff = Angle.angleBetweenOriented(this._seg0.p0, basePt, this._seg1.p1)\n const angDiffHalf = angDiff / 2\n const midAng = Angle.normalize(ang0 + angDiffHalf)\n const mitreMidAng = Angle.normalize(midAng + Math.PI)\n const mitreDist = mitreLimit * distance\n const bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf))\n const bevelHalfLen = distance - bevelDelta\n const bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng)\n const bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng)\n const bevelMidPt = new Coordinate(bevelMidX, bevelMidY)\n const mitreMidLine = new LineSegment(basePt, bevelMidPt)\n const bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen)\n const bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen)\n if (this._side === Position.LEFT) {\n this._segList.addPt(bevelEndLeft)\n this._segList.addPt(bevelEndRight)\n } else {\n this._segList.addPt(bevelEndRight)\n this._segList.addPt(bevelEndLeft)\n }\n }\n addDirectedFillet(p, startAngle, endAngle, direction, radius) {\n const directionFactor = direction === Orientation.CLOCKWISE ? -1 : 1\n const totalAngle = Math.abs(startAngle - endAngle)\n const nSegs = Math.trunc(totalAngle / this._filletAngleQuantum + 0.5)\n if (nSegs < 1) return null\n const angleInc = totalAngle / nSegs\n const pt = new Coordinate()\n for (let i = 0; i < nSegs; i++) {\n const angle = startAngle + directionFactor * i * angleInc\n pt.x = p.x + radius * Math.cos(angle)\n pt.y = p.y + radius * Math.sin(angle)\n this._segList.addPt(pt)\n }\n }\n computeOffsetSegment(seg, side, distance, offset) {\n const sideSign = side === Position.LEFT ? 1 : -1\n const dx = seg.p1.x - seg.p0.x\n const dy = seg.p1.y - seg.p0.y\n const len = Math.sqrt(dx * dx + dy * dy)\n const ux = sideSign * distance * dx / len\n const uy = sideSign * distance * dy / len\n offset.p0.x = seg.p0.x - uy\n offset.p0.y = seg.p0.y + ux\n offset.p1.x = seg.p1.x - uy\n offset.p1.y = seg.p1.y + ux\n }\n addInsideTurn(orientation, addStartPoint) {\n this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1)\n if (this._li.hasIntersection()) {\n this._segList.addPt(this._li.getIntersection(0))\n } else {\n this._hasNarrowConcaveAngle = true\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n } else {\n this._segList.addPt(this._offset0.p1)\n if (this._closingSegLengthFactor > 0) {\n const mid0 = new Coordinate((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid0)\n const mid1 = new Coordinate((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid1)\n } else {\n this._segList.addPt(this._s1)\n }\n this._segList.addPt(this._offset1.p0)\n }\n }\n }\n createCircle(p) {\n const pt = new Coordinate(p.x + this._distance, p.y)\n this._segList.addPt(pt)\n this.addDirectedFillet(p, 0.0, 2.0 * Math.PI, -1, this._distance)\n this._segList.closeRing()\n }\n addBevelJoin(offset0, offset1) {\n this._segList.addPt(offset0.p1)\n this._segList.addPt(offset1.p0)\n }\n init(distance) {\n this._distance = distance\n this._maxCurveSegmentError = distance * (1 - Math.cos(this._filletAngleQuantum / 2.0))\n this._segList = new OffsetSegmentString()\n this._segList.setPrecisionModel(this._precisionModel)\n this._segList.setMinimumVertexDistance(distance * OffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)\n }\n addCollinear(addStartPoint) {\n this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2)\n const numInt = this._li.getIntersectionNum()\n if (numInt >= 2) \n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL || this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this._segList.addPt(this._offset1.p0)\n } else {\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, Orientation.CLOCKWISE, this._distance)\n }\n \n }\n addNextSegment(p, addStartPoint) {\n this._s0 = this._s1\n this._s1 = this._s2\n this._s2 = p\n this._seg0.setCoordinates(this._s0, this._s1)\n this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0)\n this._seg1.setCoordinates(this._s1, this._s2)\n this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1)\n if (this._s1.equals(this._s2)) return null\n const orientation = Orientation.index(this._s0, this._s1, this._s2)\n const outsideTurn = orientation === Orientation.CLOCKWISE && this._side === Position.LEFT || orientation === Orientation.COUNTERCLOCKWISE && this._side === Position.RIGHT\n if (orientation === 0) \n this.addCollinear(addStartPoint)\n else if (outsideTurn) \n this.addOutsideTurn(orientation, addStartPoint)\n else \n this.addInsideTurn(orientation, addStartPoint)\n \n }\n addLineEndCap(p0, p1) {\n const seg = new LineSegment(p0, p1)\n const offsetL = new LineSegment()\n this.computeOffsetSegment(seg, Position.LEFT, this._distance, offsetL)\n const offsetR = new LineSegment()\n this.computeOffsetSegment(seg, Position.RIGHT, this._distance, offsetR)\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n const angle = Math.atan2(dy, dx)\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n this._segList.addPt(offsetL.p1)\n this.addDirectedFillet(p1, angle + Math.PI / 2, angle - Math.PI / 2, Orientation.CLOCKWISE, this._distance)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_FLAT:\n this._segList.addPt(offsetL.p1)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_SQUARE:\n const squareCapSideOffset = new Coordinate()\n squareCapSideOffset.x = Math.abs(this._distance) * Math.cos(angle)\n squareCapSideOffset.y = Math.abs(this._distance) * Math.sin(angle)\n const squareCapLOffset = new Coordinate(offsetL.p1.x + squareCapSideOffset.x, offsetL.p1.y + squareCapSideOffset.y)\n const squareCapROffset = new Coordinate(offsetR.p1.x + squareCapSideOffset.x, offsetR.p1.y + squareCapSideOffset.y)\n this._segList.addPt(squareCapLOffset)\n this._segList.addPt(squareCapROffset)\n break\n }\n }\n addOutsideTurn(orientation, addStartPoint) {\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n return null\n }\n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance)\n } else if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL) {\n this.addBevelJoin(this._offset0, this._offset1)\n } else {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, orientation, this._distance)\n this._segList.addPt(this._offset1.p0)\n }\n }\n createSquare(p) {\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y + this._distance))\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y + this._distance))\n this._segList.closeRing()\n }\n addSegments(pt, isForward) {\n this._segList.addPts(pt, isForward)\n }\n addFirstSegment() {\n this._segList.addPt(this._offset1.p0)\n }\n addCornerFillet(p, p0, p1, direction, radius) {\n const dx0 = p0.x - p.x\n const dy0 = p0.y - p.y\n let startAngle = Math.atan2(dy0, dx0)\n const dx1 = p1.x - p.x\n const dy1 = p1.y - p.y\n const endAngle = Math.atan2(dy1, dx1)\n if (direction === Orientation.CLOCKWISE) {\n if (startAngle <= endAngle) startAngle += 2.0 * Math.PI\n } else {\n if (startAngle >= endAngle) startAngle -= 2.0 * Math.PI\n }\n this._segList.addPt(p0)\n this.addDirectedFillet(p, startAngle, endAngle, direction, radius)\n this._segList.addPt(p1)\n }\n closeRing() {\n this._segList.closeRing()\n }\n hasNarrowConcaveAngle() {\n return this._hasNarrowConcaveAngle\n }\n}\nOffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3\nOffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3\nOffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6\nOffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR = 80\n","import BufferParameters from './BufferParameters.js'\nimport Position from '../../geomgraph/Position.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport BufferInputLineSimplifier from './BufferInputLineSimplifier.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nimport OffsetSegmentGenerator from './OffsetSegmentGenerator.js'\nexport default class OffsetCurveBuilder {\n constructor() {\n OffsetCurveBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n const precisionModel = arguments[0], bufParams = arguments[1]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n }\n static copyCoordinates(pts) {\n const copy = new Array(pts.length).fill(null)\n for (let i = 0; i < copy.length; i++) \n copy[i] = new Coordinate(pts[i])\n \n return copy\n }\n getOffsetCurve(inputPts, distance) {\n this._distance = distance\n if (distance === 0.0) return null\n const isRightSide = distance < 0.0\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) \n this.computePointCurve(inputPts[0], segGen)\n else \n this.computeOffsetCurve(inputPts, isRightSide, segGen)\n \n const curvePts = segGen.getCoordinates()\n if (isRightSide) CoordinateArrays.reverse(curvePts)\n return curvePts\n }\n computeSingleSidedBufferCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n segGen.addSegments(inputPts, true)\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n segGen.addSegments(inputPts, false)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n segGen.closeRing()\n }\n computeRingBufferCurve(inputPts, side, segGen) {\n let distTol = this.simplifyTolerance(this._distance)\n if (side === Position.RIGHT) distTol = -distTol\n const simp = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n = simp.length - 1\n segGen.initSideSegments(simp[n - 1], simp[0], side)\n for (let i = 1; i <= n; i++) {\n const addStartPoint = i !== 1\n segGen.addNextSegment(simp[i], addStartPoint)\n }\n segGen.closeRing()\n }\n computeLineBufferCurve(inputPts, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp1[n1 - 1], simp1[n1])\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp2[1], simp2[0])\n segGen.closeRing()\n }\n computePointCurve(pt, segGen) {\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n segGen.createCircle(pt)\n break\n case BufferParameters.CAP_SQUARE:\n segGen.createSquare(pt)\n break\n }\n }\n getLineCurve(inputPts, distance) {\n this._distance = distance\n if (this.isLineOffsetEmpty(distance)) return null\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) {\n this.computePointCurve(inputPts[0], segGen)\n } else \n if (this._bufParams.isSingleSided()) {\n const isRightSide = distance < 0.0\n this.computeSingleSidedBufferCurve(inputPts, isRightSide, segGen)\n } else {\n this.computeLineBufferCurve(inputPts, segGen)\n }\n \n const lineCoord = segGen.getCoordinates()\n return lineCoord\n }\n getBufferParameters() {\n return this._bufParams\n }\n simplifyTolerance(bufDistance) {\n return bufDistance * this._bufParams.getSimplifyFactor()\n }\n getRingCurve(inputPts, side, distance) {\n this._distance = distance\n if (inputPts.length <= 2) return this.getLineCurve(inputPts, distance)\n if (distance === 0.0) \n return OffsetCurveBuilder.copyCoordinates(inputPts)\n \n const segGen = this.getSegGen(distance)\n this.computeRingBufferCurve(inputPts, side, segGen)\n return segGen.getCoordinates()\n }\n computeOffsetCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n }\n isLineOffsetEmpty(distance) {\n if (distance === 0.0) return true\n if (distance < 0.0 && !this._bufParams.isSingleSided()) return true\n return false\n }\n getSegGen(distance) {\n return new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance)\n }\n}\n","import StringBuffer from '../../../../java/lang/StringBuffer.js'\nimport Location from '../geom/Location.js'\nimport Position from './Position.js'\nexport default class TopologyLocation {\n constructor() {\n TopologyLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.location = null\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const location = arguments[0]\n this.init(location.length)\n } else if (Number.isInteger(arguments[0])) {\n const on = arguments[0]\n this.init(1)\n this.location[Position.ON] = on\n } else if (arguments[0] instanceof TopologyLocation) {\n const gl = arguments[0]\n this.init(gl.location.length)\n if (gl !== null) \n for (let i = 0; i < this.location.length; i++) \n this.location[i] = gl.location[i]\n \n \n }\n } else if (arguments.length === 3) {\n const on = arguments[0], left = arguments[1], right = arguments[2]\n this.init(3)\n this.location[Position.ON] = on\n this.location[Position.LEFT] = left\n this.location[Position.RIGHT] = right\n }\n }\n setAllLocations(locValue) {\n for (let i = 0; i < this.location.length; i++) \n this.location[i] = locValue\n \n }\n isNull() {\n for (let i = 0; i < this.location.length; i++) \n if (this.location[i] !== Location.NONE) return false\n \n return true\n }\n setAllLocationsIfNull(locValue) {\n for (let i = 0; i < this.location.length; i++) \n if (this.location[i] === Location.NONE) this.location[i] = locValue\n \n }\n isLine() {\n return this.location.length === 1\n }\n merge(gl) {\n if (gl.location.length > this.location.length) {\n const newLoc = new Array(3).fill(null)\n newLoc[Position.ON] = this.location[Position.ON]\n newLoc[Position.LEFT] = Location.NONE\n newLoc[Position.RIGHT] = Location.NONE\n this.location = newLoc\n }\n for (let i = 0; i < this.location.length; i++) \n if (this.location[i] === Location.NONE && i < gl.location.length) this.location[i] = gl.location[i]\n \n }\n getLocations() {\n return this.location\n }\n flip() {\n if (this.location.length <= 1) return null\n const temp = this.location[Position.LEFT]\n this.location[Position.LEFT] = this.location[Position.RIGHT]\n this.location[Position.RIGHT] = temp\n }\n get(posIndex) {\n if (posIndex < this.location.length) return this.location[posIndex]\n return Location.NONE\n }\n isEqualOnSide(le, locIndex) {\n return this.location[locIndex] === le.location[locIndex]\n }\n allPositionsEqual(loc) {\n for (let i = 0; i < this.location.length; i++) \n if (this.location[i] !== loc) return false\n \n return true\n }\n toString() {\n const buf = new StringBuffer()\n if (this.location.length > 1) buf.append(Location.toLocationSymbol(this.location[Position.LEFT]))\n buf.append(Location.toLocationSymbol(this.location[Position.ON]))\n if (this.location.length > 1) buf.append(Location.toLocationSymbol(this.location[Position.RIGHT]))\n return buf.toString()\n }\n setLocations(on, left, right) {\n this.location[Position.ON] = on\n this.location[Position.LEFT] = left\n this.location[Position.RIGHT] = right\n }\n isArea() {\n return this.location.length > 1\n }\n isAnyNull() {\n for (let i = 0; i < this.location.length; i++) \n if (this.location[i] === Location.NONE) return true\n \n return false\n }\n setLocation() {\n if (arguments.length === 1) {\n const locValue = arguments[0]\n this.setLocation(Position.ON, locValue)\n } else if (arguments.length === 2) {\n const locIndex = arguments[0], locValue = arguments[1]\n this.location[locIndex] = locValue\n }\n }\n init(size) {\n this.location = new Array(size).fill(null)\n this.setAllLocations(Location.NONE)\n }\n}\n","import StringBuffer from '../../../../java/lang/StringBuffer.js'\nimport Location from '../geom/Location.js'\nimport Position from './Position.js'\nimport TopologyLocation from './TopologyLocation.js'\nexport default class Label {\n constructor() {\n Label.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.elt = new Array(2).fill(null)\n if (arguments.length === 1) {\n if (Number.isInteger(arguments[0])) {\n const onLoc = arguments[0]\n this.elt[0] = new TopologyLocation(onLoc)\n this.elt[1] = new TopologyLocation(onLoc)\n } else if (arguments[0] instanceof Label) {\n const lbl = arguments[0]\n this.elt[0] = new TopologyLocation(lbl.elt[0])\n this.elt[1] = new TopologyLocation(lbl.elt[1])\n }\n } else if (arguments.length === 2) {\n const geomIndex = arguments[0], onLoc = arguments[1]\n this.elt[0] = new TopologyLocation(Location.NONE)\n this.elt[1] = new TopologyLocation(Location.NONE)\n this.elt[geomIndex].setLocation(onLoc)\n } else if (arguments.length === 3) {\n const onLoc = arguments[0], leftLoc = arguments[1], rightLoc = arguments[2]\n this.elt[0] = new TopologyLocation(onLoc, leftLoc, rightLoc)\n this.elt[1] = new TopologyLocation(onLoc, leftLoc, rightLoc)\n } else if (arguments.length === 4) {\n const geomIndex = arguments[0], onLoc = arguments[1], leftLoc = arguments[2], rightLoc = arguments[3]\n this.elt[0] = new TopologyLocation(Location.NONE, Location.NONE, Location.NONE)\n this.elt[1] = new TopologyLocation(Location.NONE, Location.NONE, Location.NONE)\n this.elt[geomIndex].setLocations(onLoc, leftLoc, rightLoc)\n }\n }\n static toLineLabel(label) {\n const lineLabel = new Label(Location.NONE)\n for (let i = 0; i < 2; i++) \n lineLabel.setLocation(i, label.getLocation(i))\n \n return lineLabel\n }\n getGeometryCount() {\n let count = 0\n if (!this.elt[0].isNull()) count++\n if (!this.elt[1].isNull()) count++\n return count\n }\n setAllLocations(geomIndex, location) {\n this.elt[geomIndex].setAllLocations(location)\n }\n isNull(geomIndex) {\n return this.elt[geomIndex].isNull()\n }\n setAllLocationsIfNull() {\n if (arguments.length === 1) {\n const location = arguments[0]\n this.setAllLocationsIfNull(0, location)\n this.setAllLocationsIfNull(1, location)\n } else if (arguments.length === 2) {\n const geomIndex = arguments[0], location = arguments[1]\n this.elt[geomIndex].setAllLocationsIfNull(location)\n }\n }\n isLine(geomIndex) {\n return this.elt[geomIndex].isLine()\n }\n merge(lbl) {\n for (let i = 0; i < 2; i++) \n if (this.elt[i] === null && lbl.elt[i] !== null) \n this.elt[i] = new TopologyLocation(lbl.elt[i])\n else \n this.elt[i].merge(lbl.elt[i])\n \n \n }\n flip() {\n this.elt[0].flip()\n this.elt[1].flip()\n }\n getLocation() {\n if (arguments.length === 1) {\n const geomIndex = arguments[0]\n return this.elt[geomIndex].get(Position.ON)\n } else if (arguments.length === 2) {\n const geomIndex = arguments[0], posIndex = arguments[1]\n return this.elt[geomIndex].get(posIndex)\n }\n }\n toString() {\n const buf = new StringBuffer()\n if (this.elt[0] !== null) {\n buf.append('A:')\n buf.append(this.elt[0].toString())\n }\n if (this.elt[1] !== null) {\n buf.append(' B:')\n buf.append(this.elt[1].toString())\n }\n return buf.toString()\n }\n setLocation() {\n if (arguments.length === 2) {\n const geomIndex = arguments[0], location = arguments[1]\n this.elt[geomIndex].setLocation(Position.ON, location)\n } else if (arguments.length === 3) {\n const geomIndex = arguments[0], posIndex = arguments[1], location = arguments[2]\n this.elt[geomIndex].setLocation(posIndex, location)\n }\n }\n isEqualOnSide(lbl, side) {\n return this.elt[0].isEqualOnSide(lbl.elt[0], side) && this.elt[1].isEqualOnSide(lbl.elt[1], side)\n }\n allPositionsEqual(geomIndex, loc) {\n return this.elt[geomIndex].allPositionsEqual(loc)\n }\n toLine(geomIndex) {\n if (this.elt[geomIndex].isArea()) this.elt[geomIndex] = new TopologyLocation(this.elt[geomIndex].location[0])\n }\n isArea() {\n if (arguments.length === 0) {\n return this.elt[0].isArea() || this.elt[1].isArea()\n } else if (arguments.length === 1) {\n const geomIndex = arguments[0]\n return this.elt[geomIndex].isArea()\n }\n }\n isAnyNull(geomIndex) {\n return this.elt[geomIndex].isAnyNull()\n }\n}\n","import Assert from '../util/Assert.js'\nexport default class GraphComponent {\n constructor() {\n GraphComponent.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._label = null\n this._isInResult = false\n this._isCovered = false\n this._isCoveredSet = false\n this._isVisited = false\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const label = arguments[0]\n this._label = label\n }\n }\n setVisited(isVisited) {\n this._isVisited = isVisited\n }\n setInResult(isInResult) {\n this._isInResult = isInResult\n }\n setLabel(label) {\n this._label = label\n }\n getLabel() {\n return this._label\n }\n setCovered(isCovered) {\n this._isCovered = isCovered\n this._isCoveredSet = true\n }\n updateIM(im) {\n Assert.isTrue(this._label.getGeometryCount() >= 2, 'found partial label')\n this.computeIM(im)\n }\n isCovered() {\n return this._isCovered\n }\n isCoveredSet() {\n return this._isCoveredSet\n }\n isInResult() {\n return this._isInResult\n }\n isVisited() {\n return this._isVisited\n }\n}\n","import Location from '../geom/Location.js'\nimport Label from './Label.js'\nimport GraphComponent from './GraphComponent.js'\nexport default class Node extends GraphComponent {\n constructor() {\n super()\n Node.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._coord = null\n this._edges = null\n const coord = arguments[0], edges = arguments[1]\n this._coord = coord\n this._edges = edges\n this._label = new Label(0, Location.NONE)\n }\n isIncidentEdgeInResult() {\n for (let it = this.getEdges().getEdges().iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getEdge().isInResult()) return true\n }\n return false\n }\n isIsolated() {\n return this._label.getGeometryCount() === 1\n }\n getCoordinate() {\n return this._coord\n }\n computeMergedLocation(label2, eltIndex) {\n let loc = Location.NONE\n loc = this._label.getLocation(eltIndex)\n if (!label2.isNull(eltIndex)) {\n const nLoc = label2.getLocation(eltIndex)\n if (loc !== Location.BOUNDARY) loc = nLoc\n }\n return loc\n }\n setLabel() {\n if (arguments.length === 2 && (Number.isInteger(arguments[1]) && Number.isInteger(arguments[0]))) {\n const argIndex = arguments[0], onLocation = arguments[1]\n if (this._label === null) \n this._label = new Label(argIndex, onLocation)\n else this._label.setLocation(argIndex, onLocation)\n } else {\n return super.setLabel.apply(this, arguments)\n }\n }\n getEdges() {\n return this._edges\n }\n mergeLabel() {\n if (arguments[0] instanceof Node) {\n const n = arguments[0]\n this.mergeLabel(n._label)\n } else if (arguments[0] instanceof Label) {\n const label2 = arguments[0]\n for (let i = 0; i < 2; i++) {\n const loc = this.computeMergedLocation(label2, i)\n const thisLoc = this._label.getLocation(i)\n if (thisLoc === Location.NONE) this._label.setLocation(i, loc)\n }\n }\n }\n add(e) {\n this._edges.insert(e)\n e.setNode(this)\n }\n setLabelBoundary(argIndex) {\n if (this._label === null) return null\n let loc = Location.NONE\n if (this._label !== null) loc = this._label.getLocation(argIndex)\n let newLoc = null\n switch (loc) {\n case Location.BOUNDARY:\n newLoc = Location.INTERIOR\n break\n case Location.INTERIOR:\n newLoc = Location.BOUNDARY\n break\n default:\n newLoc = Location.BOUNDARY\n break\n }\n this._label.setLocation(argIndex, newLoc)\n }\n print(out) {\n out.println('node ' + this._coord + ' lbl: ' + this._label)\n }\n computeIM(im) {}\n}\n","import Location from '../geom/Location.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Node from './Node.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport TreeMap from '../../../../java/util/TreeMap.js'\nexport default class NodeMap {\n constructor() {\n NodeMap.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.nodeMap = new TreeMap()\n this.nodeFact = null\n const nodeFact = arguments[0]\n this.nodeFact = nodeFact\n }\n print(out) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const n = it.next()\n n.print(out)\n }\n }\n iterator() {\n return this.nodeMap.values().iterator()\n }\n values() {\n return this.nodeMap.values()\n }\n getBoundaryNodes(geomIndex) {\n const bdyNodes = new ArrayList()\n for (let i = this.iterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getLabel().getLocation(geomIndex) === Location.BOUNDARY) bdyNodes.add(node)\n }\n return bdyNodes\n }\n add(e) {\n const p = e.getCoordinate()\n const n = this.addNode(p)\n n.add(e)\n }\n find(coord) {\n return this.nodeMap.get(coord)\n }\n addNode() {\n if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n let node = this.nodeMap.get(coord)\n if (node === null) {\n node = this.nodeFact.createNode(coord)\n this.nodeMap.put(coord, node)\n }\n return node\n } else if (arguments[0] instanceof Node) {\n const n = arguments[0]\n const node = this.nodeMap.get(n.getCoordinate())\n if (node === null) {\n this.nodeMap.put(n.getCoordinate(), n)\n return n\n }\n node.mergeLabel(n)\n return node\n }\n }\n}\n","import Node from './Node.js'\nexport default class NodeFactory {\n createNode(coord) {\n return new Node(coord, null)\n }\n}\n","import Orientation from '../algorithm/Orientation.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport Quadrant from './Quadrant.js'\nimport Assert from '../util/Assert.js'\nexport default class EdgeEnd {\n constructor() {\n EdgeEnd.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edge = null\n this._label = null\n this._node = null\n this._p0 = null\n this._p1 = null\n this._dx = null\n this._dy = null\n this._quadrant = null\n if (arguments.length === 1) {\n const edge = arguments[0]\n this._edge = edge\n } else if (arguments.length === 3) {\n const edge = arguments[0], p0 = arguments[1], p1 = arguments[2]\n EdgeEnd.constructor_.call(this, edge, p0, p1, null)\n } else if (arguments.length === 4) {\n const edge = arguments[0], p0 = arguments[1], p1 = arguments[2], label = arguments[3]\n EdgeEnd.constructor_.call(this, edge)\n this.init(p0, p1)\n this._label = label\n }\n }\n compareDirection(e) {\n if (this._dx === e._dx && this._dy === e._dy) return 0\n if (this._quadrant > e._quadrant) return 1\n if (this._quadrant < e._quadrant) return -1\n return Orientation.index(e._p0, e._p1, this._p1)\n }\n getDy() {\n return this._dy\n }\n print(out) {\n const angle = Math.atan2(this._dy, this._dx)\n const className = this.getClass().getName()\n const lastDotPos = className.lastIndexOf('.')\n const name = className.substring(lastDotPos + 1)\n out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + angle + ' ' + this._label)\n }\n getLabel() {\n return this._label\n }\n getEdge() {\n return this._edge\n }\n toString() {\n const angle = Math.atan2(this._dy, this._dx)\n const className = this.getClass().getName()\n const lastDotPos = className.lastIndexOf('.')\n const name = className.substring(lastDotPos + 1)\n return ' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + angle + ' ' + this._label\n }\n computeLabel(boundaryNodeRule) {}\n init(p0, p1) {\n this._p0 = p0\n this._p1 = p1\n this._dx = p1.x - p0.x\n this._dy = p1.y - p0.y\n this._quadrant = Quadrant.quadrant(this._dx, this._dy)\n Assert.isTrue(!(this._dx === 0 && this._dy === 0), 'EdgeEnd with identical endpoints found')\n }\n getCoordinate() {\n return this._p0\n }\n setNode(node) {\n this._node = node\n }\n compareTo(obj) {\n const e = obj\n return this.compareDirection(e)\n }\n getDirectedCoordinate() {\n return this._p1\n }\n getDx() {\n return this._dx\n }\n getQuadrant() {\n return this._quadrant\n }\n getNode() {\n return this._node\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import Location from '../geom/Location.js'\nimport EdgeEnd from './EdgeEnd.js'\nimport Position from './Position.js'\nimport TopologyException from '../geom/TopologyException.js'\nimport Label from './Label.js'\nexport default class DirectedEdge extends EdgeEnd {\n constructor() {\n super()\n DirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isForward = null\n this._isInResult = false\n this._isVisited = false\n this._sym = null\n this._next = null\n this._nextMin = null\n this._edgeRing = null\n this._minEdgeRing = null\n this._depth = [0, -999, -999]\n const edge = arguments[0], isForward = arguments[1]\n EdgeEnd.constructor_.call(this, edge)\n this._isForward = isForward\n if (isForward) {\n this.init(edge.getCoordinate(0), edge.getCoordinate(1))\n } else {\n const n = edge.getNumPoints() - 1\n this.init(edge.getCoordinate(n), edge.getCoordinate(n - 1))\n }\n this.computeDirectedLabel()\n }\n static depthFactor(currLocation, nextLocation) {\n if (currLocation === Location.EXTERIOR && nextLocation === Location.INTERIOR) return 1; else if (currLocation === Location.INTERIOR && nextLocation === Location.EXTERIOR) return -1\n return 0\n }\n setVisited(isVisited) {\n this._isVisited = isVisited\n }\n setDepth(position, depthVal) {\n if (this._depth[position] !== -999) \n if (this._depth[position] !== depthVal) throw new TopologyException('assigned depths do not match', this.getCoordinate())\n \n this._depth[position] = depthVal\n }\n isInteriorAreaEdge() {\n let isInteriorAreaEdge = true\n for (let i = 0; i < 2; i++) \n if (!(this._label.isArea(i) && this._label.getLocation(i, Position.LEFT) === Location.INTERIOR && this._label.getLocation(i, Position.RIGHT) === Location.INTERIOR)) \n isInteriorAreaEdge = false\n \n \n return isInteriorAreaEdge\n }\n setNextMin(nextMin) {\n this._nextMin = nextMin\n }\n print(out) {\n super.print.call(this, out)\n out.print(' ' + this._depth[Position.LEFT] + '/' + this._depth[Position.RIGHT])\n out.print(' (' + this.getDepthDelta() + ')')\n if (this._isInResult) out.print(' inResult')\n }\n setMinEdgeRing(minEdgeRing) {\n this._minEdgeRing = minEdgeRing\n }\n getSym() {\n return this._sym\n }\n isForward() {\n return this._isForward\n }\n setSym(de) {\n this._sym = de\n }\n setVisitedEdge(isVisited) {\n this.setVisited(isVisited)\n this._sym.setVisited(isVisited)\n }\n getNextMin() {\n return this._nextMin\n }\n getDepth(position) {\n return this._depth[position]\n }\n computeDirectedLabel() {\n this._label = new Label(this._edge.getLabel())\n if (!this._isForward) this._label.flip()\n }\n getNext() {\n return this._next\n }\n isLineEdge() {\n const isLine = this._label.isLine(0) || this._label.isLine(1)\n const isExteriorIfArea0 = !this._label.isArea(0) || this._label.allPositionsEqual(0, Location.EXTERIOR)\n const isExteriorIfArea1 = !this._label.isArea(1) || this._label.allPositionsEqual(1, Location.EXTERIOR)\n return isLine && isExteriorIfArea0 && isExteriorIfArea1\n }\n setEdgeRing(edgeRing) {\n this._edgeRing = edgeRing\n }\n getMinEdgeRing() {\n return this._minEdgeRing\n }\n getDepthDelta() {\n let depthDelta = this._edge.getDepthDelta()\n if (!this._isForward) depthDelta = -depthDelta\n return depthDelta\n }\n setInResult(isInResult) {\n this._isInResult = isInResult\n }\n getEdge() {\n return this._edge\n }\n printEdge(out) {\n this.print(out)\n out.print(' ')\n if (this._isForward) this._edge.print(out); else this._edge.printReverse(out)\n }\n setEdgeDepths(position, depth) {\n let depthDelta = this.getEdge().getDepthDelta()\n if (!this._isForward) depthDelta = -depthDelta\n let directionFactor = 1\n if (position === Position.LEFT) directionFactor = -1\n const oppositePos = Position.opposite(position)\n const delta = depthDelta * directionFactor\n const oppositeDepth = depth + delta\n this.setDepth(position, depth)\n this.setDepth(oppositePos, oppositeDepth)\n }\n getEdgeRing() {\n return this._edgeRing\n }\n isInResult() {\n return this._isInResult\n }\n setNext(next) {\n this._next = next\n }\n isVisited() {\n return this._isVisited\n }\n}\n","import Location from '../geom/Location.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Node from './Node.js'\nimport NodeMap from './NodeMap.js'\nimport System from '../../../../java/lang/System.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Quadrant from './Quadrant.js'\nimport NodeFactory from './NodeFactory.js'\nimport Orientation from '../algorithm/Orientation.js'\nimport DirectedEdge from './DirectedEdge.js'\nexport default class PlanarGraph {\n constructor() {\n PlanarGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edges = new ArrayList()\n this._nodes = null\n this._edgeEndList = new ArrayList()\n if (arguments.length === 0) {\n this._nodes = new NodeMap(new NodeFactory())\n } else if (arguments.length === 1) {\n const nodeFact = arguments[0]\n this._nodes = new NodeMap(nodeFact)\n }\n }\n static linkResultDirectedEdges(nodes) {\n for (let nodeit = nodes.iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().linkResultDirectedEdges()\n }\n }\n printEdges(out) {\n out.println('Edges:')\n for (let i = 0; i < this._edges.size(); i++) {\n out.println('edge ' + i + ':')\n const e = this._edges.get(i)\n e.print(out)\n e.eiList.print(out)\n }\n }\n debugPrintln(o) {\n System.out.println(o)\n }\n isBoundaryNode(geomIndex, coord) {\n const node = this._nodes.find(coord)\n if (node === null) return false\n const label = node.getLabel()\n if (label !== null && label.getLocation(geomIndex) === Location.BOUNDARY) return true\n return false\n }\n linkAllDirectedEdges() {\n for (let nodeit = this._nodes.iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().linkAllDirectedEdges()\n }\n }\n debugPrint(o) {\n System.out.print(o)\n }\n findEdgeEnd(e) {\n for (let i = this.getEdgeEnds().iterator(); i.hasNext(); ) {\n const ee = i.next()\n if (ee.getEdge() === e) return ee\n }\n return null\n }\n getNodes() {\n return this._nodes.values()\n }\n findEdge(p0, p1) {\n for (let i = 0; i < this._edges.size(); i++) {\n const e = this._edges.get(i)\n const eCoord = e.getCoordinates()\n if (p0.equals(eCoord[0]) && p1.equals(eCoord[1])) return e\n }\n return null\n }\n find(coord) {\n return this._nodes.find(coord)\n }\n addNode() {\n if (arguments[0] instanceof Node) {\n const node = arguments[0]\n return this._nodes.addNode(node)\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n return this._nodes.addNode(coord)\n }\n }\n getNodeIterator() {\n return this._nodes.iterator()\n }\n linkResultDirectedEdges() {\n for (let nodeit = this._nodes.iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().linkResultDirectedEdges()\n }\n }\n matchInSameDirection(p0, p1, ep0, ep1) {\n if (!p0.equals(ep0)) return false\n if (Orientation.index(p0, p1, ep1) === Orientation.COLLINEAR && Quadrant.quadrant(p0, p1) === Quadrant.quadrant(ep0, ep1)) return true\n return false\n }\n getEdgeEnds() {\n return this._edgeEndList\n }\n getEdgeIterator() {\n return this._edges.iterator()\n }\n findEdgeInSameDirection(p0, p1) {\n for (let i = 0; i < this._edges.size(); i++) {\n const e = this._edges.get(i)\n const eCoord = e.getCoordinates()\n if (this.matchInSameDirection(p0, p1, eCoord[0], eCoord[1])) return e\n if (this.matchInSameDirection(p0, p1, eCoord[eCoord.length - 1], eCoord[eCoord.length - 2])) return e\n }\n return null\n }\n insertEdge(e) {\n this._edges.add(e)\n }\n addEdges(edgesToAdd) {\n for (let it = edgesToAdd.iterator(); it.hasNext(); ) {\n const e = it.next()\n this._edges.add(e)\n const de1 = new DirectedEdge(e, true)\n const de2 = new DirectedEdge(e, false)\n de1.setSym(de2)\n de2.setSym(de1)\n this.add(de1)\n this.add(de2)\n }\n }\n add(e) {\n this._nodes.add(e)\n this._edgeEndList.add(e)\n }\n}\n","import Location from '../geom/Location.js'\nimport hasInterface from '../../../../hasInterface.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Orientation from './Orientation.js'\nimport CoordinateSequence from '../geom/CoordinateSequence.js'\nexport default class RayCrossingCounter {\n constructor() {\n RayCrossingCounter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._p = null\n this._crossingCount = 0\n this._isPointOnSegment = false\n const p = arguments[0]\n this._p = p\n }\n static locatePointInRing() {\n if (arguments[0] instanceof Coordinate && hasInterface(arguments[1], CoordinateSequence)) {\n const p = arguments[0], ring = arguments[1]\n const counter = new RayCrossingCounter(p)\n const p1 = new Coordinate()\n const p2 = new Coordinate()\n for (let i = 1; i < ring.size(); i++) {\n ring.getCoordinate(i, p1)\n ring.getCoordinate(i - 1, p2)\n counter.countSegment(p1, p2)\n if (counter.isOnSegment()) return counter.getLocation()\n }\n return counter.getLocation()\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Array) {\n const p = arguments[0], ring = arguments[1]\n const counter = new RayCrossingCounter(p)\n for (let i = 1; i < ring.length; i++) {\n const p1 = ring[i]\n const p2 = ring[i - 1]\n counter.countSegment(p1, p2)\n if (counter.isOnSegment()) return counter.getLocation()\n }\n return counter.getLocation()\n }\n }\n getLocation() {\n if (this._isPointOnSegment) return Location.BOUNDARY\n if (this._crossingCount % 2 === 1) \n return Location.INTERIOR\n \n return Location.EXTERIOR\n }\n isPointInPolygon() {\n return this.getLocation() !== Location.EXTERIOR\n }\n isOnSegment() {\n return this._isPointOnSegment\n }\n countSegment(p1, p2) {\n if (p1.x < this._p.x && p2.x < this._p.x) return null\n if (this._p.x === p2.x && this._p.y === p2.y) {\n this._isPointOnSegment = true\n return null\n }\n if (p1.y === this._p.y && p2.y === this._p.y) {\n let minx = p1.x\n let maxx = p2.x\n if (minx > maxx) {\n minx = p2.x\n maxx = p1.x\n }\n if (this._p.x >= minx && this._p.x <= maxx) \n this._isPointOnSegment = true\n \n return null\n }\n if (p1.y > this._p.y && p2.y <= this._p.y || p2.y > this._p.y && p1.y <= this._p.y) {\n let orient = Orientation.index(p1, p2, this._p)\n if (orient === Orientation.COLLINEAR) {\n this._isPointOnSegment = true\n return null\n }\n if (p2.y < p1.y) \n orient = -orient\n \n if (orient === Orientation.LEFT) \n this._crossingCount++\n \n }\n }\n}\n","import Location from '../geom/Location.js'\nimport hasInterface from '../../../../hasInterface.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport CoordinateSequence from '../geom/CoordinateSequence.js'\nimport RobustLineIntersector from './RobustLineIntersector.js'\nimport RayCrossingCounter from './RayCrossingCounter.js'\nexport default class PointLocation {\n static isInRing(p, ring) {\n return PointLocation.locateInRing(p, ring) !== Location.EXTERIOR\n }\n static locateInRing(p, ring) {\n return RayCrossingCounter.locatePointInRing(p, ring)\n }\n static isOnLine() {\n if (arguments[0] instanceof Coordinate && hasInterface(arguments[1], CoordinateSequence)) {\n const p = arguments[0], line = arguments[1]\n const lineIntersector = new RobustLineIntersector()\n const p0 = new Coordinate()\n const p1 = new Coordinate()\n const n = line.size()\n for (let i = 1; i < n; i++) {\n line.getCoordinate(i - 1, p0)\n line.getCoordinate(i, p1)\n lineIntersector.computeIntersection(p, p0, p1)\n if (lineIntersector.hasIntersection()) \n return true\n \n }\n return false\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Array) {\n const p = arguments[0], line = arguments[1]\n const lineIntersector = new RobustLineIntersector()\n for (let i = 1; i < line.length; i++) {\n const p0 = line[i - 1]\n const p1 = line[i]\n lineIntersector.computeIntersection(p, p0, p1)\n if (lineIntersector.hasIntersection()) \n return true\n \n }\n return false\n }\n }\n}\n","import Location from '../geom/Location.js'\nimport Position from './Position.js'\nimport PointLocation from '../algorithm/PointLocation.js'\nimport TopologyException from '../geom/TopologyException.js'\nimport Orientation from '../algorithm/Orientation.js'\nimport Label from './Label.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Assert from '../util/Assert.js'\nexport default class EdgeRing {\n constructor() {\n EdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._startDe = null\n this._maxNodeDegree = -1\n this._edges = new ArrayList()\n this._pts = new ArrayList()\n this._label = new Label(Location.NONE)\n this._ring = null\n this._isHole = null\n this._shell = null\n this._holes = new ArrayList()\n this._geometryFactory = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const start = arguments[0], geometryFactory = arguments[1]\n this._geometryFactory = geometryFactory\n this.computePoints(start)\n this.computeRing()\n }\n }\n computeRing() {\n if (this._ring !== null) return null\n const coord = new Array(this._pts.size()).fill(null)\n for (let i = 0; i < this._pts.size(); i++) \n coord[i] = this._pts.get(i)\n \n this._ring = this._geometryFactory.createLinearRing(coord)\n this._isHole = Orientation.isCCW(this._ring.getCoordinates())\n }\n isIsolated() {\n return this._label.getGeometryCount() === 1\n }\n computePoints(start) {\n this._startDe = start\n let de = start\n let isFirstEdge = true\n do {\n if (de === null) throw new TopologyException('Found null DirectedEdge')\n if (de.getEdgeRing() === this) throw new TopologyException('Directed Edge visited twice during ring-building at ' + de.getCoordinate())\n this._edges.add(de)\n const label = de.getLabel()\n Assert.isTrue(label.isArea())\n this.mergeLabel(label)\n this.addPoints(de.getEdge(), de.isForward(), isFirstEdge)\n isFirstEdge = false\n this.setEdgeRing(de, this)\n de = this.getNext(de)\n } while (de !== this._startDe)\n }\n getLinearRing() {\n return this._ring\n }\n getCoordinate(i) {\n return this._pts.get(i)\n }\n computeMaxNodeDegree() {\n this._maxNodeDegree = 0\n let de = this._startDe\n do {\n const node = de.getNode()\n const degree = node.getEdges().getOutgoingDegree(this)\n if (degree > this._maxNodeDegree) this._maxNodeDegree = degree\n de = this.getNext(de)\n } while (de !== this._startDe)\n this._maxNodeDegree *= 2\n }\n addPoints(edge, isForward, isFirstEdge) {\n const edgePts = edge.getCoordinates()\n if (isForward) {\n let startIndex = 1\n if (isFirstEdge) startIndex = 0\n for (let i = startIndex; i < edgePts.length; i++) \n this._pts.add(edgePts[i])\n \n } else {\n let startIndex = edgePts.length - 2\n if (isFirstEdge) startIndex = edgePts.length - 1\n for (let i = startIndex; i >= 0; i--) \n this._pts.add(edgePts[i])\n \n }\n }\n containsPoint(p) {\n const shell = this.getLinearRing()\n const env = shell.getEnvelopeInternal()\n if (!env.contains(p)) return false\n if (!PointLocation.isInRing(p, shell.getCoordinates())) return false\n for (let i = this._holes.iterator(); i.hasNext(); ) {\n const hole = i.next()\n if (hole.containsPoint(p)) return false\n }\n return true\n }\n getMaxNodeDegree() {\n if (this._maxNodeDegree < 0) this.computeMaxNodeDegree()\n return this._maxNodeDegree\n }\n setShell(shell) {\n this._shell = shell\n if (shell !== null) shell.addHole(this)\n }\n toPolygon(geometryFactory) {\n const holeLR = new Array(this._holes.size()).fill(null)\n for (let i = 0; i < this._holes.size(); i++) \n holeLR[i] = this._holes.get(i).getLinearRing()\n \n const poly = geometryFactory.createPolygon(this.getLinearRing(), holeLR)\n return poly\n }\n isHole() {\n return this._isHole\n }\n setInResult() {\n let de = this._startDe\n do {\n de.getEdge().setInResult(true)\n de = de.getNext()\n } while (de !== this._startDe)\n }\n addHole(ring) {\n this._holes.add(ring)\n }\n isShell() {\n return this._shell === null\n }\n getLabel() {\n return this._label\n }\n getEdges() {\n return this._edges\n }\n getShell() {\n return this._shell\n }\n mergeLabel() {\n if (arguments.length === 1) {\n const deLabel = arguments[0]\n this.mergeLabel(deLabel, 0)\n this.mergeLabel(deLabel, 1)\n } else if (arguments.length === 2) {\n const deLabel = arguments[0], geomIndex = arguments[1]\n const loc = deLabel.getLocation(geomIndex, Position.RIGHT)\n if (loc === Location.NONE) return null\n if (this._label.getLocation(geomIndex) === Location.NONE) {\n this._label.setLocation(geomIndex, loc)\n return null\n }\n }\n }\n}\n","import EdgeRing from '../../geomgraph/EdgeRing.js'\nexport default class MinimalEdgeRing extends EdgeRing {\n constructor() {\n super()\n MinimalEdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const start = arguments[0], geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\n }\n getNext(de) {\n return de.getNextMin()\n }\n setEdgeRing(de, er) {\n de.setMinEdgeRing(er)\n }\n}\n","import MinimalEdgeRing from './MinimalEdgeRing.js'\nimport EdgeRing from '../../geomgraph/EdgeRing.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nexport default class MaximalEdgeRing extends EdgeRing {\n constructor() {\n super()\n MaximalEdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const start = arguments[0], geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\n }\n linkDirectedEdgesForMinimalEdgeRings() {\n let de = this._startDe\n do {\n const node = de.getNode()\n node.getEdges().linkMinimalDirectedEdges(this)\n de = de.getNext()\n } while (de !== this._startDe)\n }\n buildMinimalRings() {\n const minEdgeRings = new ArrayList()\n let de = this._startDe\n do {\n if (de.getMinEdgeRing() === null) {\n const minEr = new MinimalEdgeRing(de, this._geometryFactory)\n minEdgeRings.add(minEr)\n }\n de = de.getNext()\n } while (de !== this._startDe)\n return minEdgeRings\n }\n getNext(de) {\n return de.getNext()\n }\n setEdgeRing(de, er) {\n de.setEdgeRing(er)\n }\n}\n","import PointLocation from '../../algorithm/PointLocation.js'\nimport TopologyException from '../../geom/TopologyException.js'\nimport MaximalEdgeRing from './MaximalEdgeRing.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Assert from '../../util/Assert.js'\nimport PlanarGraph from '../../geomgraph/PlanarGraph.js'\nexport default class PolygonBuilder {\n constructor() {\n PolygonBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geometryFactory = null\n this._shellList = new ArrayList()\n const geometryFactory = arguments[0]\n this._geometryFactory = geometryFactory\n }\n static findEdgeRingContaining(testEr, shellList) {\n const testRing = testEr.getLinearRing()\n const testEnv = testRing.getEnvelopeInternal()\n let testPt = testRing.getCoordinateN(0)\n let minShell = null\n let minShellEnv = null\n for (let it = shellList.iterator(); it.hasNext(); ) {\n const tryShell = it.next()\n const tryShellRing = tryShell.getLinearRing()\n const tryShellEnv = tryShellRing.getEnvelopeInternal()\n if (tryShellEnv.equals(testEnv)) continue\n if (!tryShellEnv.contains(testEnv)) continue\n testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryShellRing.getCoordinates())\n let isContained = false\n if (PointLocation.isInRing(testPt, tryShellRing.getCoordinates())) isContained = true\n if (isContained) \n if (minShell === null || minShellEnv.contains(tryShellEnv)) {\n minShell = tryShell\n minShellEnv = minShell.getLinearRing().getEnvelopeInternal()\n }\n \n }\n return minShell\n }\n sortShellsAndHoles(edgeRings, shellList, freeHoleList) {\n for (let it = edgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.isHole()) \n freeHoleList.add(er)\n else \n shellList.add(er)\n \n }\n }\n computePolygons(shellList) {\n const resultPolyList = new ArrayList()\n for (let it = shellList.iterator(); it.hasNext(); ) {\n const er = it.next()\n const poly = er.toPolygon(this._geometryFactory)\n resultPolyList.add(poly)\n }\n return resultPolyList\n }\n placeFreeHoles(shellList, freeHoleList) {\n for (let it = freeHoleList.iterator(); it.hasNext(); ) {\n const hole = it.next()\n if (hole.getShell() === null) {\n const shell = PolygonBuilder.findEdgeRingContaining(hole, shellList)\n if (shell === null) throw new TopologyException('unable to assign hole to a shell', hole.getCoordinate(0))\n hole.setShell(shell)\n }\n }\n }\n buildMinimalEdgeRings(maxEdgeRings, shellList, freeHoleList) {\n const edgeRings = new ArrayList()\n for (let it = maxEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.getMaxNodeDegree() > 2) {\n er.linkDirectedEdgesForMinimalEdgeRings()\n const minEdgeRings = er.buildMinimalRings()\n const shell = this.findShell(minEdgeRings)\n if (shell !== null) {\n this.placePolygonHoles(shell, minEdgeRings)\n shellList.add(shell)\n } else {\n freeHoleList.addAll(minEdgeRings)\n }\n } else {\n edgeRings.add(er)\n }\n }\n return edgeRings\n }\n buildMaximalEdgeRings(dirEdges) {\n const maxEdgeRings = new ArrayList()\n for (let it = dirEdges.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() && de.getLabel().isArea()) \n if (de.getEdgeRing() === null) {\n const er = new MaximalEdgeRing(de, this._geometryFactory)\n maxEdgeRings.add(er)\n er.setInResult()\n }\n \n }\n return maxEdgeRings\n }\n placePolygonHoles(shell, minEdgeRings) {\n for (let it = minEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.isHole()) \n er.setShell(shell)\n \n }\n }\n getPolygons() {\n const resultPolyList = this.computePolygons(this._shellList)\n return resultPolyList\n }\n findShell(minEdgeRings) {\n let shellCount = 0\n let shell = null\n for (let it = minEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (!er.isHole()) {\n shell = er\n shellCount++\n }\n }\n Assert.isTrue(shellCount <= 1, 'found two shells in MinimalEdgeRing list')\n return shell\n }\n add() {\n if (arguments.length === 1) {\n const graph = arguments[0]\n this.add(graph.getEdgeEnds(), graph.getNodes())\n } else if (arguments.length === 2) {\n const dirEdges = arguments[0], nodes = arguments[1]\n PlanarGraph.linkResultDirectedEdges(nodes)\n const maxEdgeRings = this.buildMaximalEdgeRings(dirEdges)\n const freeHoleList = new ArrayList()\n const edgeRings = this.buildMinimalEdgeRings(maxEdgeRings, this._shellList, freeHoleList)\n this.sortShellsAndHoles(edgeRings, this._shellList, freeHoleList)\n this.placeFreeHoles(this._shellList, freeHoleList)\n }\n }\n}\n","import hasInterface from '../../../../../hasInterface.js'\nimport Position from '../../geomgraph/Position.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport LineSegment from '../../geom/LineSegment.js'\nimport Comparable from '../../../../../java/lang/Comparable.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport List from '../../../../../java/util/List.js'\nimport DirectedEdge from '../../geomgraph/DirectedEdge.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Collections from '../../../../../java/util/Collections.js'\nexport default class SubgraphDepthLocater {\n constructor() {\n SubgraphDepthLocater.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subgraphs = null\n this._seg = new LineSegment()\n const subgraphs = arguments[0]\n this._subgraphs = subgraphs\n }\n findStabbedSegments() {\n if (arguments.length === 1) {\n const stabbingRayLeftPt = arguments[0]\n const stabbedSegments = new ArrayList()\n for (let i = this._subgraphs.iterator(); i.hasNext(); ) {\n const bsg = i.next()\n const env = bsg.getEnvelope()\n if (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY()) continue\n this.findStabbedSegments(stabbingRayLeftPt, bsg.getDirectedEdges(), stabbedSegments)\n }\n return stabbedSegments\n } else if (arguments.length === 3) {\n if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && arguments[1] instanceof DirectedEdge)) {\n const stabbingRayLeftPt = arguments[0], dirEdge = arguments[1], stabbedSegments = arguments[2]\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) {\n this._seg.p0 = pts[i]\n this._seg.p1 = pts[i + 1]\n if (this._seg.p0.y > this._seg.p1.y) this._seg.reverse()\n const maxx = Math.max(this._seg.p0.x, this._seg.p1.x)\n if (maxx < stabbingRayLeftPt.x) continue\n if (this._seg.isHorizontal()) continue\n if (stabbingRayLeftPt.y < this._seg.p0.y || stabbingRayLeftPt.y > this._seg.p1.y) continue\n if (Orientation.index(this._seg.p0, this._seg.p1, stabbingRayLeftPt) === Orientation.RIGHT) continue\n let depth = dirEdge.getDepth(Position.LEFT)\n if (!this._seg.p0.equals(pts[i])) depth = dirEdge.getDepth(Position.RIGHT)\n const ds = new DepthSegment(this._seg, depth)\n stabbedSegments.add(ds)\n }\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && hasInterface(arguments[1], List))) {\n const stabbingRayLeftPt = arguments[0], dirEdges = arguments[1], stabbedSegments = arguments[2]\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.findStabbedSegments(stabbingRayLeftPt, de, stabbedSegments)\n }\n }\n }\n }\n getDepth(p) {\n const stabbedSegments = this.findStabbedSegments(p)\n if (stabbedSegments.size() === 0) return 0\n const ds = Collections.min(stabbedSegments)\n return ds._leftDepth\n }\n}\nclass DepthSegment {\n constructor() {\n DepthSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._upwardSeg = null\n this._leftDepth = null\n const seg = arguments[0], depth = arguments[1]\n this._upwardSeg = new LineSegment(seg)\n this._leftDepth = depth\n }\n compareX(seg0, seg1) {\n const compare0 = seg0.p0.compareTo(seg1.p0)\n if (compare0 !== 0) return compare0\n return seg0.p1.compareTo(seg1.p1)\n }\n toString() {\n return this._upwardSeg.toString()\n }\n compareTo(obj) {\n const other = obj\n if (this._upwardSeg.minX() >= other._upwardSeg.maxX()) return 1\n if (this._upwardSeg.maxX() <= other._upwardSeg.minX()) return -1\n let orientIndex = this._upwardSeg.orientationIndex(other._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n orientIndex = -1 * other._upwardSeg.orientationIndex(this._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n return this._upwardSeg.compareTo(other._upwardSeg)\n }\n get interfaces_() {\n return [Comparable]\n }\n}\nSubgraphDepthLocater.DepthSegment = DepthSegment\n","import Exception from '../../../../java/lang/Exception.js'\nexport default class NotRepresentableException extends Exception {\n constructor() {\n super()\n NotRepresentableException.constructor_.apply(this, arguments)\n }\n static constructor_() {\n Exception.constructor_.call(this, 'Projective point not representable on the Cartesian plane.')\n }\n}\n","import NotRepresentableException from './NotRepresentableException.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Double from '../../../../java/lang/Double.js'\nexport default class HCoordinate {\n constructor() {\n HCoordinate.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.x = null\n this.y = null\n this.w = null\n if (arguments.length === 0) {\n this.x = 0.0\n this.y = 0.0\n this.w = 1.0\n } else if (arguments.length === 1) {\n const p = arguments[0]\n this.x = p.x\n this.y = p.y\n this.w = 1.0\n } else if (arguments.length === 2) {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const _x = arguments[0], _y = arguments[1]\n this.x = _x\n this.y = _y\n this.w = 1.0\n } else if (arguments[0] instanceof HCoordinate && arguments[1] instanceof HCoordinate) {\n const p1 = arguments[0], p2 = arguments[1]\n this.x = p1.y * p2.w - p2.y * p1.w\n this.y = p2.x * p1.w - p1.x * p2.w\n this.w = p1.x * p2.y - p2.x * p1.y\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const p1 = arguments[0], p2 = arguments[1]\n this.x = p1.y - p2.y\n this.y = p2.x - p1.x\n this.w = p1.x * p2.y - p2.x * p1.y\n }\n } else if (arguments.length === 3) {\n const _x = arguments[0], _y = arguments[1], _w = arguments[2]\n this.x = _x\n this.y = _y\n this.w = _w\n } else if (arguments.length === 4) {\n const p1 = arguments[0], p2 = arguments[1], q1 = arguments[2], q2 = arguments[3]\n const px = p1.y - p2.y\n const py = p2.x - p1.x\n const pw = p1.x * p2.y - p2.x * p1.y\n const qx = q1.y - q2.y\n const qy = q2.x - q1.x\n const qw = q1.x * q2.y - q2.x * q1.y\n this.x = py * qw - qy * pw\n this.y = qx * pw - px * qw\n this.w = px * qy - qx * py\n }\n }\n getCoordinate() {\n const p = new Coordinate()\n p.x = this.getX()\n p.y = this.getY()\n return p\n }\n getX() {\n const a = this.x / this.w\n if (Double.isNaN(a) || Double.isInfinite(a)) \n throw new NotRepresentableException()\n \n return a\n }\n getY() {\n const a = this.y / this.w\n if (Double.isNaN(a) || Double.isInfinite(a)) \n throw new NotRepresentableException()\n \n return a\n }\n}\n","import DD from '../math/DD.js'\nimport Angle from '../algorithm/Angle.js'\nimport HCoordinate from '../algorithm/HCoordinate.js'\nimport Coordinate from './Coordinate.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nexport default class Triangle {\n constructor() {\n Triangle.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.p0 = null\n this.p1 = null\n this.p2 = null\n const p0 = arguments[0], p1 = arguments[1], p2 = arguments[2]\n this.p0 = p0\n this.p1 = p1\n this.p2 = p2\n }\n static isAcute(a, b, c) {\n if (!Angle.isAcute(a, b, c)) return false\n if (!Angle.isAcute(b, c, a)) return false\n if (!Angle.isAcute(c, a, b)) return false\n return true\n }\n static circumcentre(a, b, c) {\n const cx = c.x\n const cy = c.y\n const ax = a.x - cx\n const ay = a.y - cy\n const bx = b.x - cx\n const by = b.y - cy\n const denom = 2 * Triangle.det(ax, ay, bx, by)\n const numx = Triangle.det(ay, ax * ax + ay * ay, by, bx * bx + by * by)\n const numy = Triangle.det(ax, ax * ax + ay * ay, bx, bx * bx + by * by)\n const ccx = cx - numx / denom\n const ccy = cy + numy / denom\n return new Coordinate(ccx, ccy)\n }\n static perpendicularBisector(a, b) {\n const dx = b.x - a.x\n const dy = b.y - a.y\n const l1 = new HCoordinate(a.x + dx / 2.0, a.y + dy / 2.0, 1.0)\n const l2 = new HCoordinate(a.x - dy + dx / 2.0, a.y + dx + dy / 2.0, 1.0)\n return new HCoordinate(l1, l2)\n }\n static angleBisector(a, b, c) {\n const len0 = b.distance(a)\n const len2 = b.distance(c)\n const frac = len0 / (len0 + len2)\n const dx = c.x - a.x\n const dy = c.y - a.y\n const splitPt = new Coordinate(a.x + frac * dx, a.y + frac * dy)\n return splitPt\n }\n static inCentre(a, b, c) {\n const len0 = b.distance(c)\n const len1 = a.distance(c)\n const len2 = a.distance(b)\n const circum = len0 + len1 + len2\n const inCentreX = (len0 * a.x + len1 * b.x + len2 * c.x) / circum\n const inCentreY = (len0 * a.y + len1 * b.y + len2 * c.y) / circum\n return new Coordinate(inCentreX, inCentreY)\n }\n static area(a, b, c) {\n return Math.abs(((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2)\n }\n static signedArea(a, b, c) {\n return ((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2\n }\n static det(m00, m01, m10, m11) {\n return m00 * m11 - m01 * m10\n }\n static interpolateZ(p, v0, v1, v2) {\n const x0 = v0.x\n const y0 = v0.y\n const a = v1.x - x0\n const b = v2.x - x0\n const c = v1.y - y0\n const d = v2.y - y0\n const det = a * d - b * c\n const dx = p.x - x0\n const dy = p.y - y0\n const t = (d * dx - b * dy) / det\n const u = (-c * dx + a * dy) / det\n const z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ())\n return z\n }\n static longestSideLength(a, b, c) {\n const lenAB = a.distance(b)\n const lenBC = b.distance(c)\n const lenCA = c.distance(a)\n let maxLen = lenAB\n if (lenBC > maxLen) maxLen = lenBC\n if (lenCA > maxLen) maxLen = lenCA\n return maxLen\n }\n static circumcentreDD(a, b, c) {\n const ax = DD.valueOf(a.x).subtract(c.x)\n const ay = DD.valueOf(a.y).subtract(c.y)\n const bx = DD.valueOf(b.x).subtract(c.x)\n const by = DD.valueOf(b.y).subtract(c.y)\n const denom = DD.determinant(ax, ay, bx, by).multiply(2)\n const asqr = ax.sqr().add(ay.sqr())\n const bsqr = bx.sqr().add(by.sqr())\n const numx = DD.determinant(ay, asqr, by, bsqr)\n const numy = DD.determinant(ax, asqr, bx, bsqr)\n const ccx = DD.valueOf(c.x).subtract(numx.divide(denom)).doubleValue()\n const ccy = DD.valueOf(c.y).add(numy.divide(denom)).doubleValue()\n return new Coordinate(ccx, ccy)\n }\n static area3D(a, b, c) {\n const ux = b.x - a.x\n const uy = b.y - a.y\n const uz = b.getZ() - a.getZ()\n const vx = c.x - a.x\n const vy = c.y - a.y\n const vz = c.getZ() - a.getZ()\n const crossx = uy * vz - uz * vy\n const crossy = uz * vx - ux * vz\n const crossz = ux * vy - uy * vx\n const absSq = crossx * crossx + crossy * crossy + crossz * crossz\n const area3D = Math.sqrt(absSq) / 2\n return area3D\n }\n static centroid(a, b, c) {\n const x = (a.x + b.x + c.x) / 3\n const y = (a.y + b.y + c.y) / 3\n return new Coordinate(x, y)\n }\n interpolateZ(p) {\n if (p === null) throw new IllegalArgumentException('Supplied point is null.')\n return Triangle.interpolateZ(p, this.p0, this.p1, this.p2)\n }\n longestSideLength() {\n return Triangle.longestSideLength(this.p0, this.p1, this.p2)\n }\n isAcute() {\n return Triangle.isAcute(this.p0, this.p1, this.p2)\n }\n circumcentre() {\n return Triangle.circumcentre(this.p0, this.p1, this.p2)\n }\n inCentre() {\n return Triangle.inCentre(this.p0, this.p1, this.p2)\n }\n area() {\n return Triangle.area(this.p0, this.p1, this.p2)\n }\n signedArea() {\n return Triangle.signedArea(this.p0, this.p1, this.p2)\n }\n area3D() {\n return Triangle.area3D(this.p0, this.p1, this.p2)\n }\n centroid() {\n return Triangle.centroid(this.p0, this.p1, this.p2)\n }\n}\n","import Location from '../../geom/Location.js'\nimport LineString from '../../geom/LineString.js'\nimport Position from '../../geomgraph/Position.js'\nimport Point from '../../geom/Point.js'\nimport LinearRing from '../../geom/LinearRing.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport MultiPolygon from '../../geom/MultiPolygon.js'\nimport Label from '../../geomgraph/Label.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Distance from '../../algorithm/Distance.js'\nimport MultiLineString from '../../geom/MultiLineString.js'\nimport Triangle from '../../geom/Triangle.js'\nimport NodedSegmentString from '../../noding/NodedSegmentString.js'\nimport Polygon from '../../geom/Polygon.js'\nimport MultiPoint from '../../geom/MultiPoint.js'\nimport GeometryCollection from '../../geom/GeometryCollection.js'\nimport UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException.js'\nexport default class OffsetCurveSetBuilder {\n constructor() {\n OffsetCurveSetBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distance = null\n this._curveBuilder = null\n this._curveList = new ArrayList()\n const inputGeom = arguments[0], distance = arguments[1], curveBuilder = arguments[2]\n this._inputGeom = inputGeom\n this._distance = distance\n this._curveBuilder = curveBuilder\n }\n addRingSide(coord, offsetDistance, side, cwLeftLoc, cwRightLoc) {\n if (offsetDistance === 0.0 && coord.length < LinearRing.MINIMUM_VALID_SIZE) return null\n let leftLoc = cwLeftLoc\n let rightLoc = cwRightLoc\n if (coord.length >= LinearRing.MINIMUM_VALID_SIZE && Orientation.isCCW(coord)) {\n leftLoc = cwRightLoc\n rightLoc = cwLeftLoc\n side = Position.opposite(side)\n }\n const curve = this._curveBuilder.getRingCurve(coord, side, offsetDistance)\n this.addCurve(curve, leftLoc, rightLoc)\n }\n addRingBothSides(coord, distance) {\n this.addRingSide(coord, distance, Position.LEFT, Location.EXTERIOR, Location.INTERIOR)\n this.addRingSide(coord, distance, Position.RIGHT, Location.INTERIOR, Location.EXTERIOR)\n }\n addPoint(p) {\n if (this._distance <= 0.0) return null\n const coord = p.getCoordinates()\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n addPolygon(p) {\n let offsetDistance = this._distance\n let offsetSide = Position.LEFT\n if (this._distance < 0.0) {\n offsetDistance = -this._distance\n offsetSide = Position.RIGHT\n }\n const shell = p.getExteriorRing()\n const shellCoord = CoordinateArrays.removeRepeatedPoints(shell.getCoordinates())\n if (this._distance < 0.0 && this.isErodedCompletely(shell, this._distance)) return null\n if (this._distance <= 0.0 && shellCoord.length < 3) return null\n this.addRingSide(shellCoord, offsetDistance, offsetSide, Location.EXTERIOR, Location.INTERIOR)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n const holeCoord = CoordinateArrays.removeRepeatedPoints(hole.getCoordinates())\n if (this._distance > 0.0 && this.isErodedCompletely(hole, -this._distance)) continue\n this.addRingSide(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR)\n }\n }\n isTriangleErodedCompletely(triangleCoord, bufferDistance) {\n const tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2])\n const inCentre = tri.inCentre()\n const distToCentre = Distance.pointToSegment(inCentre, tri.p0, tri.p1)\n return distToCentre < Math.abs(bufferDistance)\n }\n addLineString(line) {\n if (this._curveBuilder.isLineOffsetEmpty(this._distance)) return null\n const coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\n if (CoordinateArrays.isRing(coord) && !this._curveBuilder.getBufferParameters().isSingleSided()) {\n this.addRingBothSides(coord, this._distance)\n } else {\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n }\n add(g) {\n if (g.isEmpty()) return null\n if (g instanceof Polygon) this.addPolygon(g); else if (g instanceof LineString) this.addLineString(g); else if (g instanceof Point) this.addPoint(g); else if (g instanceof MultiPoint) this.addCollection(g); else if (g instanceof MultiLineString) this.addCollection(g); else if (g instanceof MultiPolygon) this.addCollection(g); else if (g instanceof GeometryCollection) this.addCollection(g); else throw new UnsupportedOperationException(g.getGeometryType())\n }\n addCurve(coord, leftLoc, rightLoc) {\n if (coord === null || coord.length < 2) return null\n const e = new NodedSegmentString(coord, new Label(0, Location.BOUNDARY, leftLoc, rightLoc))\n this._curveList.add(e)\n }\n getCurves() {\n this.add(this._inputGeom)\n return this._curveList\n }\n isErodedCompletely(ring, bufferDistance) {\n const ringCoord = ring.getCoordinates()\n if (ringCoord.length < 4) return bufferDistance < 0\n if (ringCoord.length === 4) return this.isTriangleErodedCompletely(ringCoord, bufferDistance)\n const env = ring.getEnvelopeInternal()\n const envMinDimension = Math.min(env.getHeight(), env.getWidth())\n if (bufferDistance < 0.0 && 2 * Math.abs(bufferDistance) > envMinDimension) return true\n return false\n }\n addCollection(gc) {\n for (let i = 0; i < gc.getNumGeometries(); i++) {\n const g = gc.getGeometryN(i)\n this.add(g)\n }\n }\n}\n","export default class PointOnGeometryLocator {\n locate(p) {}\n}\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html\n * @constructor\n * @private\n */\nexport default class Iterator {\n /**\n * Returns true if the iteration has more elements.\n * @return {boolean}\n */\n hasNext() {}\n\n /**\n * Returns the next element in the iteration.\n * @return {Object}\n */\n next() {}\n\n /**\n * Removes from the underlying collection the last element returned by the\n * iterator (optional operation).\n */\n remove() {}\n}\n","import Iterator from '../../../../java/util/Iterator.js'\nimport NoSuchElementException from '../../../../java/util/NoSuchElementException.js'\nimport GeometryCollection from './GeometryCollection.js'\nimport UnsupportedOperationException from '../../../../java/lang/UnsupportedOperationException.js'\nexport default class GeometryCollectionIterator {\n constructor() {\n GeometryCollectionIterator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parent = null\n this._atStart = null\n this._max = null\n this._index = null\n this._subcollectionIterator = null\n const parent = arguments[0]\n this._parent = parent\n this._atStart = true\n this._index = 0\n this._max = parent.getNumGeometries()\n }\n static isAtomic(geom) {\n return !(geom instanceof GeometryCollection)\n }\n next() {\n if (this._atStart) {\n this._atStart = false\n if (GeometryCollectionIterator.isAtomic(this._parent)) this._index++\n return this._parent\n }\n if (this._subcollectionIterator !== null) \n if (this._subcollectionIterator.hasNext()) \n return this._subcollectionIterator.next()\n else \n this._subcollectionIterator = null\n \n \n if (this._index >= this._max) \n throw new NoSuchElementException()\n \n const obj = this._parent.getGeometryN(this._index++)\n if (obj instanceof GeometryCollection) {\n this._subcollectionIterator = new GeometryCollectionIterator(obj)\n return this._subcollectionIterator.next()\n }\n return obj\n }\n hasNext() {\n if (this._atStart) \n return true\n \n if (this._subcollectionIterator !== null) {\n if (this._subcollectionIterator.hasNext()) \n return true\n \n this._subcollectionIterator = null\n }\n if (this._index >= this._max) \n return false\n \n return true\n }\n remove() {\n throw new UnsupportedOperationException(this.getClass().getName())\n }\n get interfaces_() {\n return [Iterator]\n }\n}\n","import Location from '../../geom/Location.js'\nimport Polygon from '../../geom/Polygon.js'\nimport PointLocation from '../PointLocation.js'\nimport PointOnGeometryLocator from './PointOnGeometryLocator.js'\nimport GeometryCollectionIterator from '../../geom/GeometryCollectionIterator.js'\nimport GeometryCollection from '../../geom/GeometryCollection.js'\nexport default class SimplePointInAreaLocator {\n constructor() {\n SimplePointInAreaLocator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n const geom = arguments[0]\n this._geom = geom\n }\n static locatePointInPolygon(p, poly) {\n if (poly.isEmpty()) return Location.EXTERIOR\n const shell = poly.getExteriorRing()\n const shellLoc = SimplePointInAreaLocator.locatePointInRing(p, shell)\n if (shellLoc !== Location.INTERIOR) return shellLoc\n for (let i = 0; i < poly.getNumInteriorRing(); i++) {\n const hole = poly.getInteriorRingN(i)\n const holeLoc = SimplePointInAreaLocator.locatePointInRing(p, hole)\n if (holeLoc === Location.BOUNDARY) return Location.BOUNDARY\n if (holeLoc === Location.INTERIOR) return Location.EXTERIOR\n }\n return Location.INTERIOR\n }\n static locatePointInRing(p, ring) {\n if (!ring.getEnvelopeInternal().intersects(p)) return Location.EXTERIOR\n return PointLocation.locateInRing(p, ring.getCoordinates())\n }\n static isContained(p, geom) {\n return Location.EXTERIOR !== SimplePointInAreaLocator.locate(p, geom)\n }\n static locate(p, geom) {\n if (geom.isEmpty()) return Location.EXTERIOR\n if (!geom.getEnvelopeInternal().intersects(p)) return Location.EXTERIOR\n return SimplePointInAreaLocator.locateInGeometry(p, geom)\n }\n static containsPointInPolygon(p, poly) {\n return Location.EXTERIOR !== SimplePointInAreaLocator.locatePointInPolygon(p, poly)\n }\n static locateInGeometry(p, geom) {\n if (geom instanceof Polygon) \n return SimplePointInAreaLocator.locatePointInPolygon(p, geom)\n \n if (geom instanceof GeometryCollection) {\n const geomi = new GeometryCollectionIterator(geom)\n while (geomi.hasNext()) {\n const g2 = geomi.next()\n if (g2 !== geom) {\n const loc = SimplePointInAreaLocator.locateInGeometry(p, g2)\n if (loc !== Location.EXTERIOR) return loc\n }\n }\n }\n return Location.EXTERIOR\n }\n locate(p) {\n return SimplePointInAreaLocator.locate(p, this._geom)\n }\n get interfaces_() {\n return [PointOnGeometryLocator]\n }\n}\n","import StringBuffer from '../../../../java/lang/StringBuffer.js'\nimport Location from '../geom/Location.js'\nimport Position from './Position.js'\nimport TopologyException from '../geom/TopologyException.js'\nimport System from '../../../../java/lang/System.js'\nimport SimplePointInAreaLocator from '../algorithm/locate/SimplePointInAreaLocator.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Assert from '../util/Assert.js'\nimport TreeMap from '../../../../java/util/TreeMap.js'\nexport default class EdgeEndStar {\n constructor() {\n EdgeEndStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeMap = new TreeMap()\n this._edgeList = null\n this._ptInAreaLocation = [Location.NONE, Location.NONE]\n }\n getNextCW(ee) {\n this.getEdges()\n const i = this._edgeList.indexOf(ee)\n let iNextCW = i - 1\n if (i === 0) iNextCW = this._edgeList.size() - 1\n return this._edgeList.get(iNextCW)\n }\n propagateSideLabels(geomIndex) {\n let startLoc = Location.NONE\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (label.isArea(geomIndex) && label.getLocation(geomIndex, Position.LEFT) !== Location.NONE) startLoc = label.getLocation(geomIndex, Position.LEFT)\n }\n if (startLoc === Location.NONE) return null\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (label.getLocation(geomIndex, Position.ON) === Location.NONE) label.setLocation(geomIndex, Position.ON, currLoc)\n if (label.isArea(geomIndex)) {\n const leftLoc = label.getLocation(geomIndex, Position.LEFT)\n const rightLoc = label.getLocation(geomIndex, Position.RIGHT)\n if (rightLoc !== Location.NONE) {\n if (rightLoc !== currLoc) throw new TopologyException('side location conflict', e.getCoordinate())\n if (leftLoc === Location.NONE) \n Assert.shouldNeverReachHere('found single null side (at ' + e.getCoordinate() + ')')\n \n currLoc = leftLoc\n } else {\n Assert.isTrue(label.getLocation(geomIndex, Position.LEFT) === Location.NONE, 'found single null side')\n label.setLocation(geomIndex, Position.RIGHT, currLoc)\n label.setLocation(geomIndex, Position.LEFT, currLoc)\n }\n }\n }\n }\n getCoordinate() {\n const it = this.iterator()\n if (!it.hasNext()) return null\n const e = it.next()\n return e.getCoordinate()\n }\n checkAreaLabelsConsistent(geomIndex) {\n const edges = this.getEdges()\n if (edges.size() <= 0) return true\n const lastEdgeIndex = edges.size() - 1\n const startLabel = edges.get(lastEdgeIndex).getLabel()\n const startLoc = startLabel.getLocation(geomIndex, Position.LEFT)\n Assert.isTrue(startLoc !== Location.NONE, 'Found unlabelled area edge')\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n Assert.isTrue(label.isArea(geomIndex), 'Found non-area edge')\n const leftLoc = label.getLocation(geomIndex, Position.LEFT)\n const rightLoc = label.getLocation(geomIndex, Position.RIGHT)\n if (leftLoc === rightLoc) \n return false\n \n if (rightLoc !== currLoc) \n return false\n \n currLoc = leftLoc\n }\n return true\n }\n findIndex(eSearch) {\n this.iterator()\n for (let i = 0; i < this._edgeList.size(); i++) {\n const e = this._edgeList.get(i)\n if (e === eSearch) return i\n }\n return -1\n }\n iterator() {\n return this.getEdges().iterator()\n }\n getEdges() {\n if (this._edgeList === null) \n this._edgeList = new ArrayList(this._edgeMap.values())\n \n return this._edgeList\n }\n getLocation(geomIndex, p, geom) {\n if (this._ptInAreaLocation[geomIndex] === Location.NONE) \n this._ptInAreaLocation[geomIndex] = SimplePointInAreaLocator.locate(p, geom[geomIndex].getGeometry())\n \n return this._ptInAreaLocation[geomIndex]\n }\n toString() {\n const buf = new StringBuffer()\n buf.append('EdgeEndStar: ' + this.getCoordinate())\n buf.append('\\n')\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n buf.append(e)\n buf.append('\\n')\n }\n return buf.toString()\n }\n computeEdgeEndLabels(boundaryNodeRule) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n ee.computeLabel(boundaryNodeRule)\n }\n }\n computeLabelling(geomGraph) {\n this.computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule())\n this.propagateSideLabels(0)\n this.propagateSideLabels(1)\n const hasDimensionalCollapseEdge = [false, false]\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n for (let geomi = 0; geomi < 2; geomi++) \n if (label.isLine(geomi) && label.getLocation(geomi) === Location.BOUNDARY) hasDimensionalCollapseEdge[geomi] = true\n \n }\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n for (let geomi = 0; geomi < 2; geomi++) \n if (label.isAnyNull(geomi)) {\n let loc = Location.NONE\n if (hasDimensionalCollapseEdge[geomi]) {\n loc = Location.EXTERIOR\n } else {\n const p = e.getCoordinate()\n loc = this.getLocation(geomi, p, geomGraph)\n }\n label.setAllLocationsIfNull(geomi, loc)\n }\n \n }\n }\n getDegree() {\n return this._edgeMap.size()\n }\n insertEdgeEnd(e, obj) {\n this._edgeMap.put(e, obj)\n this._edgeList = null\n }\n print(out) {\n System.out.println('EdgeEndStar: ' + this.getCoordinate())\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n e.print(out)\n }\n }\n isAreaLabelsConsistent(geomGraph) {\n this.computeEdgeEndLabels(geomGraph.getBoundaryNodeRule())\n return this.checkAreaLabelsConsistent(0)\n }\n}\n","import Location from '../geom/Location.js'\nimport Position from './Position.js'\nimport TopologyException from '../geom/TopologyException.js'\nimport Label from './Label.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport EdgeEndStar from './EdgeEndStar.js'\nimport System from '../../../../java/lang/System.js'\nimport Quadrant from './Quadrant.js'\nimport Assert from '../util/Assert.js'\nexport default class DirectedEdgeStar extends EdgeEndStar {\n constructor() {\n super()\n DirectedEdgeStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._resultAreaEdgeList = null\n this._label = null\n this._SCANNING_FOR_INCOMING = 1\n this._LINKING_TO_OUTGOING = 2\n }\n linkResultDirectedEdges() {\n this.getResultAreaEdges()\n let firstOut = null\n let incoming = null\n let state = this._SCANNING_FOR_INCOMING\n for (let i = 0; i < this._resultAreaEdgeList.size(); i++) {\n const nextOut = this._resultAreaEdgeList.get(i)\n const nextIn = nextOut.getSym()\n if (!nextOut.getLabel().isArea()) continue\n if (firstOut === null && nextOut.isInResult()) firstOut = nextOut\n switch (state) {\n case this._SCANNING_FOR_INCOMING:\n if (!nextIn.isInResult()) continue\n incoming = nextIn\n state = this._LINKING_TO_OUTGOING\n break\n case this._LINKING_TO_OUTGOING:\n if (!nextOut.isInResult()) continue\n incoming.setNext(nextOut)\n state = this._SCANNING_FOR_INCOMING\n break\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n if (firstOut === null) throw new TopologyException('no outgoing dirEdge found', this.getCoordinate())\n Assert.isTrue(firstOut.isInResult(), 'unable to link last incoming dirEdge')\n incoming.setNext(firstOut)\n }\n }\n insert(ee) {\n const de = ee\n this.insertEdgeEnd(de, de)\n }\n getRightmostEdge() {\n const edges = this.getEdges()\n const size = edges.size()\n if (size < 1) return null\n const de0 = edges.get(0)\n if (size === 1) return de0\n const deLast = edges.get(size - 1)\n const quad0 = de0.getQuadrant()\n const quad1 = deLast.getQuadrant()\n if (Quadrant.isNorthern(quad0) && Quadrant.isNorthern(quad1)) {\n return de0\n } else if (!Quadrant.isNorthern(quad0) && !Quadrant.isNorthern(quad1)) {\n return deLast\n } else {\n const nonHorizontalEdge = null\n if (de0.getDy() !== 0) return de0; else if (deLast.getDy() !== 0) return deLast\n }\n Assert.shouldNeverReachHere('found two horizontal edges incident on node')\n return null\n }\n updateLabelling(nodeLabel) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n label.setAllLocationsIfNull(0, nodeLabel.getLocation(0))\n label.setAllLocationsIfNull(1, nodeLabel.getLocation(1))\n }\n }\n linkAllDirectedEdges() {\n this.getEdges()\n let prevOut = null\n let firstIn = null\n for (let i = this._edgeList.size() - 1; i >= 0; i--) {\n const nextOut = this._edgeList.get(i)\n const nextIn = nextOut.getSym()\n if (firstIn === null) firstIn = nextIn\n if (prevOut !== null) nextIn.setNext(prevOut)\n prevOut = nextOut\n }\n firstIn.setNext(prevOut)\n }\n computeDepths() {\n if (arguments.length === 1) {\n const de = arguments[0]\n const edgeIndex = this.findIndex(de)\n const startDepth = de.getDepth(Position.LEFT)\n const targetLastDepth = de.getDepth(Position.RIGHT)\n const nextDepth = this.computeDepths(edgeIndex + 1, this._edgeList.size(), startDepth)\n const lastDepth = this.computeDepths(0, edgeIndex, nextDepth)\n if (lastDepth !== targetLastDepth) throw new TopologyException('depth mismatch at ' + de.getCoordinate())\n } else if (arguments.length === 3) {\n const startIndex = arguments[0], endIndex = arguments[1], startDepth = arguments[2]\n let currDepth = startDepth\n for (let i = startIndex; i < endIndex; i++) {\n const nextDe = this._edgeList.get(i)\n nextDe.setEdgeDepths(Position.RIGHT, currDepth)\n currDepth = nextDe.getDepth(Position.LEFT)\n }\n return currDepth\n }\n }\n mergeSymLabels() {\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n label.merge(de.getSym().getLabel())\n }\n }\n linkMinimalDirectedEdges(er) {\n let firstOut = null\n let incoming = null\n let state = this._SCANNING_FOR_INCOMING\n for (let i = this._resultAreaEdgeList.size() - 1; i >= 0; i--) {\n const nextOut = this._resultAreaEdgeList.get(i)\n const nextIn = nextOut.getSym()\n if (firstOut === null && nextOut.getEdgeRing() === er) firstOut = nextOut\n switch (state) {\n case this._SCANNING_FOR_INCOMING:\n if (nextIn.getEdgeRing() !== er) continue\n incoming = nextIn\n state = this._LINKING_TO_OUTGOING\n break\n case this._LINKING_TO_OUTGOING:\n if (nextOut.getEdgeRing() !== er) continue\n incoming.setNextMin(nextOut)\n state = this._SCANNING_FOR_INCOMING\n break\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n Assert.isTrue(firstOut !== null, 'found null for first outgoing dirEdge')\n Assert.isTrue(firstOut.getEdgeRing() === er, 'unable to link last incoming dirEdge')\n incoming.setNextMin(firstOut)\n }\n }\n getOutgoingDegree() {\n if (arguments.length === 0) {\n let degree = 0\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult()) degree++\n }\n return degree\n } else if (arguments.length === 1) {\n const er = arguments[0]\n let degree = 0\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getEdgeRing() === er) degree++\n }\n return degree\n }\n }\n getLabel() {\n return this._label\n }\n findCoveredLineEdges() {\n let startLoc = Location.NONE\n for (let it = this.iterator(); it.hasNext(); ) {\n const nextOut = it.next()\n const nextIn = nextOut.getSym()\n if (!nextOut.isLineEdge()) {\n if (nextOut.isInResult()) {\n startLoc = Location.INTERIOR\n break\n }\n if (nextIn.isInResult()) {\n startLoc = Location.EXTERIOR\n break\n }\n }\n }\n if (startLoc === Location.NONE) return null\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const nextOut = it.next()\n const nextIn = nextOut.getSym()\n if (nextOut.isLineEdge()) {\n nextOut.getEdge().setCovered(currLoc === Location.INTERIOR)\n } else {\n if (nextOut.isInResult()) currLoc = Location.EXTERIOR\n if (nextIn.isInResult()) currLoc = Location.INTERIOR\n }\n }\n }\n computeLabelling(geom) {\n super.computeLabelling.call(this, geom)\n this._label = new Label(Location.NONE)\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n const e = ee.getEdge()\n const eLabel = e.getLabel()\n for (let i = 0; i < 2; i++) {\n const eLoc = eLabel.getLocation(i)\n if (eLoc === Location.INTERIOR || eLoc === Location.BOUNDARY) this._label.setLocation(i, Location.INTERIOR)\n }\n }\n }\n print(out) {\n System.out.println('DirectedEdgeStar: ' + this.getCoordinate())\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n out.print('out ')\n de.print(out)\n out.println()\n out.print('in ')\n de.getSym().print(out)\n out.println()\n }\n }\n getResultAreaEdges() {\n if (this._resultAreaEdgeList !== null) return this._resultAreaEdgeList\n this._resultAreaEdgeList = new ArrayList()\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() || de.getSym().isInResult()) this._resultAreaEdgeList.add(de)\n }\n return this._resultAreaEdgeList\n }\n}\n","import DirectedEdgeStar from '../../geomgraph/DirectedEdgeStar.js'\nimport Node from '../../geomgraph/Node.js'\nimport NodeFactory from '../../geomgraph/NodeFactory.js'\nexport default class OverlayNodeFactory extends NodeFactory {\n constructor() {\n super()\n }\n createNode(coord) {\n return new Node(coord, new DirectedEdgeStar())\n }\n}\n","import Comparable from '../../../../java/lang/Comparable.js'\nimport CoordinateArrays from '../geom/CoordinateArrays.js'\nexport default class OrientedCoordinateArray {\n constructor() {\n OrientedCoordinateArray.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._orientation = null\n const pts = arguments[0]\n this._pts = pts\n this._orientation = OrientedCoordinateArray.orientation(pts)\n }\n static orientation(pts) {\n return CoordinateArrays.increasingDirection(pts) === 1\n }\n static compareOriented(pts1, orientation1, pts2, orientation2) {\n const dir1 = orientation1 ? 1 : -1\n const dir2 = orientation2 ? 1 : -1\n const limit1 = orientation1 ? pts1.length : -1\n const limit2 = orientation2 ? pts2.length : -1\n let i1 = orientation1 ? 0 : pts1.length - 1\n let i2 = orientation2 ? 0 : pts2.length - 1\n while (true) {\n const compPt = pts1[i1].compareTo(pts2[i2])\n if (compPt !== 0) return compPt\n i1 += dir1\n i2 += dir2\n const done1 = i1 === limit1\n const done2 = i2 === limit2\n if (done1 && !done2) return -1\n if (!done1 && done2) return 1\n if (done1 && done2) return 0\n }\n }\n compareTo(o1) {\n const oca = o1\n const comp = OrientedCoordinateArray.compareOriented(this._pts, this._orientation, oca._pts, oca._orientation)\n return comp\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import OrientedCoordinateArray from '../noding/OrientedCoordinateArray.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport TreeMap from '../../../../java/util/TreeMap.js'\nexport default class EdgeList {\n constructor() {\n EdgeList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edges = new ArrayList()\n this._ocaMap = new TreeMap()\n }\n print(out) {\n out.print('MULTILINESTRING ( ')\n for (let j = 0; j < this._edges.size(); j++) {\n const e = this._edges.get(j)\n if (j > 0) out.print(',')\n out.print('(')\n const pts = e.getCoordinates()\n for (let i = 0; i < pts.length; i++) {\n if (i > 0) out.print(',')\n out.print(pts[i].x + ' ' + pts[i].y)\n }\n out.println(')')\n }\n out.print(') ')\n }\n addAll(edgeColl) {\n for (let i = edgeColl.iterator(); i.hasNext(); ) \n this.add(i.next())\n \n }\n findEdgeIndex(e) {\n for (let i = 0; i < this._edges.size(); i++) \n if (this._edges.get(i).equals(e)) return i\n \n return -1\n }\n iterator() {\n return this._edges.iterator()\n }\n getEdges() {\n return this._edges\n }\n get(i) {\n return this._edges.get(i)\n }\n findEqualEdge(e) {\n const oca = new OrientedCoordinateArray(e.getCoordinates())\n const matchEdge = this._ocaMap.get(oca)\n return matchEdge\n }\n add(e) {\n this._edges.add(e)\n const oca = new OrientedCoordinateArray(e.getCoordinates())\n this._ocaMap.put(oca, e)\n }\n}\n","import SegmentIntersector from './SegmentIntersector.js'\nexport default class IntersectionAdder {\n constructor() {\n IntersectionAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hasIntersection = false\n this._hasProper = false\n this._hasProperInterior = false\n this._hasInterior = false\n this._properIntersectionPoint = null\n this._li = null\n this._isSelfIntersection = null\n this.numIntersections = 0\n this.numInteriorIntersections = 0\n this.numProperIntersections = 0\n this.numTests = 0\n const li = arguments[0]\n this._li = li\n }\n static isAdjacentSegments(i1, i2) {\n return Math.abs(i1 - i2) === 1\n }\n isTrivialIntersection(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1) \n if (this._li.getIntersectionNum() === 1) {\n if (IntersectionAdder.isAdjacentSegments(segIndex0, segIndex1)) return true\n if (e0.isClosed()) {\n const maxSegIndex = e0.size() - 1\n if (segIndex0 === 0 && segIndex1 === maxSegIndex || segIndex1 === 0 && segIndex0 === maxSegIndex) \n return true\n \n }\n }\n \n return false\n }\n getProperIntersectionPoint() {\n return this._properIntersectionPoint\n }\n hasProperInteriorIntersection() {\n return this._hasProperInterior\n }\n getLineIntersector() {\n return this._li\n }\n hasProperIntersection() {\n return this._hasProper\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n this.numTests++\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) {\n this.numIntersections++\n if (this._li.isInteriorIntersection()) {\n this.numInteriorIntersections++\n this._hasInterior = true\n }\n if (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n this._hasIntersection = true\n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n if (this._li.isProper()) {\n this.numProperIntersections++\n this._hasProper = true\n this._hasProperInterior = true\n }\n }\n }\n }\n hasIntersection() {\n return this._hasIntersection\n }\n isDone() {\n return false\n }\n hasInteriorIntersection() {\n return this._hasInterior\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nexport default class EdgeIntersection {\n constructor() {\n EdgeIntersection.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.coord = null\n this.segmentIndex = null\n this.dist = null\n const coord = arguments[0], segmentIndex = arguments[1], dist = arguments[2]\n this.coord = new Coordinate(coord)\n this.segmentIndex = segmentIndex\n this.dist = dist\n }\n getSegmentIndex() {\n return this.segmentIndex\n }\n getCoordinate() {\n return this.coord\n }\n print(out) {\n out.print(this.coord)\n out.print(' seg # = ' + this.segmentIndex)\n out.println(' dist = ' + this.dist)\n }\n compareTo(obj) {\n const other = obj\n return this.compare(other.segmentIndex, other.dist)\n }\n isEndPoint(maxSegmentIndex) {\n if (this.segmentIndex === 0 && this.dist === 0.0) return true\n if (this.segmentIndex === maxSegmentIndex) return true\n return false\n }\n toString() {\n return this.coord + ' seg # = ' + this.segmentIndex + ' dist = ' + this.dist\n }\n getDistance() {\n return this.dist\n }\n compare(segmentIndex, dist) {\n if (this.segmentIndex < segmentIndex) return -1\n if (this.segmentIndex > segmentIndex) return 1\n if (this.dist < dist) return -1\n if (this.dist > dist) return 1\n return 0\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import EdgeIntersection from './EdgeIntersection.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Label from './Label.js'\nimport Edge from './Edge.js'\nimport TreeMap from '../../../../java/util/TreeMap.js'\nexport default class EdgeIntersectionList {\n constructor() {\n EdgeIntersectionList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeMap = new TreeMap()\n this.edge = null\n const edge = arguments[0]\n this.edge = edge\n }\n print(out) {\n out.println('Intersections:')\n for (let it = this.iterator(); it.hasNext(); ) {\n const ei = it.next()\n ei.print(out)\n }\n }\n addEndpoints() {\n const maxSegIndex = this.edge.pts.length - 1\n this.add(this.edge.pts[0], 0, 0.0)\n this.add(this.edge.pts[maxSegIndex], maxSegIndex, 0.0)\n }\n createSplitEdge(ei0, ei1) {\n let npts = ei1.segmentIndex - ei0.segmentIndex + 2\n const lastSegStartPt = this.edge.pts[ei1.segmentIndex]\n const useIntPt1 = ei1.dist > 0.0 || !ei1.coord.equals2D(lastSegStartPt)\n if (!useIntPt1) \n npts--\n \n const pts = new Array(npts).fill(null)\n let ipt = 0\n pts[ipt++] = new Coordinate(ei0.coord)\n for (let i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) \n pts[ipt++] = this.edge.pts[i]\n \n if (useIntPt1) pts[ipt] = ei1.coord\n return new Edge(pts, new Label(this.edge._label))\n }\n add(intPt, segmentIndex, dist) {\n const eiNew = new EdgeIntersection(intPt, segmentIndex, dist)\n const ei = this._nodeMap.get(eiNew)\n if (ei !== null) \n return ei\n \n this._nodeMap.put(eiNew, eiNew)\n return eiNew\n }\n isIntersection(pt) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const ei = it.next()\n if (ei.coord.equals(pt)) return true\n }\n return false\n }\n iterator() {\n return this._nodeMap.values().iterator()\n }\n addSplitEdges(edgeList) {\n this.addEndpoints()\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n const newEdge = this.createSplitEdge(eiPrev, ei)\n edgeList.add(newEdge)\n eiPrev = ei\n }\n }\n}\n","import Location from './Location.js'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException.js'\nimport Dimension from './Dimension.js'\nimport Cloneable from '../../../../java/lang/Cloneable.js'\nimport StringBuilder from '../../../../java/lang/StringBuilder.js'\nexport default class IntersectionMatrix {\n constructor() {\n IntersectionMatrix.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._matrix = null\n if (arguments.length === 0) {\n this._matrix = Array(3).fill().map(() => Array(3))\n this.setAll(Dimension.FALSE)\n } else if (arguments.length === 1) {\n if (typeof arguments[0] === 'string') {\n const elements = arguments[0]\n IntersectionMatrix.constructor_.call(this)\n this.set(elements)\n } else if (arguments[0] instanceof IntersectionMatrix) {\n const other = arguments[0]\n IntersectionMatrix.constructor_.call(this)\n this._matrix[Location.INTERIOR][Location.INTERIOR] = other._matrix[Location.INTERIOR][Location.INTERIOR]\n this._matrix[Location.INTERIOR][Location.BOUNDARY] = other._matrix[Location.INTERIOR][Location.BOUNDARY]\n this._matrix[Location.INTERIOR][Location.EXTERIOR] = other._matrix[Location.INTERIOR][Location.EXTERIOR]\n this._matrix[Location.BOUNDARY][Location.INTERIOR] = other._matrix[Location.BOUNDARY][Location.INTERIOR]\n this._matrix[Location.BOUNDARY][Location.BOUNDARY] = other._matrix[Location.BOUNDARY][Location.BOUNDARY]\n this._matrix[Location.BOUNDARY][Location.EXTERIOR] = other._matrix[Location.BOUNDARY][Location.EXTERIOR]\n this._matrix[Location.EXTERIOR][Location.INTERIOR] = other._matrix[Location.EXTERIOR][Location.INTERIOR]\n this._matrix[Location.EXTERIOR][Location.BOUNDARY] = other._matrix[Location.EXTERIOR][Location.BOUNDARY]\n this._matrix[Location.EXTERIOR][Location.EXTERIOR] = other._matrix[Location.EXTERIOR][Location.EXTERIOR]\n }\n }\n }\n static isTrue(actualDimensionValue) {\n if (actualDimensionValue >= 0 || actualDimensionValue === Dimension.TRUE) \n return true\n \n return false\n }\n static matches() {\n if (Number.isInteger(arguments[0]) && typeof arguments[1] === 'string') {\n const actualDimensionValue = arguments[0], requiredDimensionSymbol = arguments[1]\n if (requiredDimensionSymbol === Dimension.SYM_DONTCARE) \n return true\n \n if (requiredDimensionSymbol === Dimension.SYM_TRUE && (actualDimensionValue >= 0 || actualDimensionValue === Dimension.TRUE)) \n return true\n \n if (requiredDimensionSymbol === Dimension.SYM_FALSE && actualDimensionValue === Dimension.FALSE) \n return true\n \n if (requiredDimensionSymbol === Dimension.SYM_P && actualDimensionValue === Dimension.P) \n return true\n \n if (requiredDimensionSymbol === Dimension.SYM_L && actualDimensionValue === Dimension.L) \n return true\n \n if (requiredDimensionSymbol === Dimension.SYM_A && actualDimensionValue === Dimension.A) \n return true\n \n return false\n } else if (typeof arguments[0] === 'string' && typeof arguments[1] === 'string') {\n const actualDimensionSymbols = arguments[0], requiredDimensionSymbols = arguments[1]\n const m = new IntersectionMatrix(actualDimensionSymbols)\n return m.matches(requiredDimensionSymbols)\n }\n }\n isIntersects() {\n return !this.isDisjoint()\n }\n set() {\n if (arguments.length === 1) {\n const dimensionSymbols = arguments[0]\n for (let i = 0; i < dimensionSymbols.length; i++) {\n const row = Math.trunc(i / 3)\n const col = i % 3\n this._matrix[row][col] = Dimension.toDimensionValue(dimensionSymbols.charAt(i))\n }\n } else if (arguments.length === 3) {\n const row = arguments[0], column = arguments[1], dimensionValue = arguments[2]\n this._matrix[row][column] = dimensionValue\n }\n }\n isContains() {\n return IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && this._matrix[Location.EXTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.BOUNDARY] === Dimension.FALSE\n }\n isWithin() {\n return IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && this._matrix[Location.INTERIOR][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.EXTERIOR] === Dimension.FALSE\n }\n isTouches(dimensionOfGeometryA, dimensionOfGeometryB) {\n if (dimensionOfGeometryA > dimensionOfGeometryB) \n return this.isTouches(dimensionOfGeometryB, dimensionOfGeometryA)\n \n if (dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.L || dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.L) \n return this._matrix[Location.INTERIOR][Location.INTERIOR] === Dimension.FALSE && (IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.BOUNDARY]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.BOUNDARY]))\n \n return false\n }\n isOverlaps(dimensionOfGeometryA, dimensionOfGeometryB) {\n if (dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.P || dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.A) \n return IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.EXTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.EXTERIOR][Location.INTERIOR])\n \n if (dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.L) \n return this._matrix[Location.INTERIOR][Location.INTERIOR] === 1 && IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.EXTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.EXTERIOR][Location.INTERIOR])\n \n return false\n }\n isEquals(dimensionOfGeometryA, dimensionOfGeometryB) {\n if (dimensionOfGeometryA !== dimensionOfGeometryB) \n return false\n \n return IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && this._matrix[Location.INTERIOR][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.BOUNDARY] === Dimension.FALSE\n }\n matches(requiredDimensionSymbols) {\n if (requiredDimensionSymbols.length !== 9) \n throw new IllegalArgumentException('Should be length 9: ' + requiredDimensionSymbols)\n \n for (let ai = 0; ai < 3; ai++) \n for (let bi = 0; bi < 3; bi++) \n if (!IntersectionMatrix.matches(this._matrix[ai][bi], requiredDimensionSymbols.charAt(3 * ai + bi))) \n return false\n \n \n \n return true\n }\n add(im) {\n for (let i = 0; i < 3; i++) \n for (let j = 0; j < 3; j++) \n this.setAtLeast(i, j, im.get(i, j))\n \n \n }\n isDisjoint() {\n return this._matrix[Location.INTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.INTERIOR][Location.BOUNDARY] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.BOUNDARY] === Dimension.FALSE\n }\n isCrosses(dimensionOfGeometryA, dimensionOfGeometryB) {\n if (dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.L || dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.A) \n return IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.EXTERIOR])\n \n if (dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.P || dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.P || dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.L) \n return IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.EXTERIOR][Location.INTERIOR])\n \n if (dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.L) \n return this._matrix[Location.INTERIOR][Location.INTERIOR] === 0\n \n return false\n }\n isCovers() {\n const hasPointInCommon = IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.BOUNDARY]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.BOUNDARY])\n return hasPointInCommon && this._matrix[Location.EXTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.BOUNDARY] === Dimension.FALSE\n }\n isCoveredBy() {\n const hasPointInCommon = IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.BOUNDARY]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.BOUNDARY])\n return hasPointInCommon && this._matrix[Location.INTERIOR][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.EXTERIOR] === Dimension.FALSE\n }\n setAtLeast() {\n if (arguments.length === 1) {\n const minimumDimensionSymbols = arguments[0]\n for (let i = 0; i < minimumDimensionSymbols.length; i++) {\n const row = Math.trunc(i / 3)\n const col = i % 3\n this.setAtLeast(row, col, Dimension.toDimensionValue(minimumDimensionSymbols.charAt(i)))\n }\n } else if (arguments.length === 3) {\n const row = arguments[0], column = arguments[1], minimumDimensionValue = arguments[2]\n if (this._matrix[row][column] < minimumDimensionValue) \n this._matrix[row][column] = minimumDimensionValue\n \n }\n }\n setAtLeastIfValid(row, column, minimumDimensionValue) {\n if (row >= 0 && column >= 0) \n this.setAtLeast(row, column, minimumDimensionValue)\n \n }\n toString() {\n const builder = new StringBuilder('123456789')\n for (let ai = 0; ai < 3; ai++) \n for (let bi = 0; bi < 3; bi++) \n builder.setCharAt(3 * ai + bi, Dimension.toDimensionSymbol(this._matrix[ai][bi]))\n \n \n return builder.toString()\n }\n setAll(dimensionValue) {\n for (let ai = 0; ai < 3; ai++) \n for (let bi = 0; bi < 3; bi++) \n this._matrix[ai][bi] = dimensionValue\n \n \n }\n get(row, column) {\n return this._matrix[row][column]\n }\n transpose() {\n let temp = this._matrix[1][0]\n this._matrix[1][0] = this._matrix[0][1]\n this._matrix[0][1] = temp\n temp = this._matrix[2][0]\n this._matrix[2][0] = this._matrix[0][2]\n this._matrix[0][2] = temp\n temp = this._matrix[2][1]\n this._matrix[2][1] = this._matrix[1][2]\n this._matrix[1][2] = temp\n return this\n }\n get interfaces_() {\n return [Cloneable]\n }\n}\n","import Location from '../geom/Location.js'\nimport Position from './Position.js'\nexport default class Depth {\n constructor() {\n Depth.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._depth = Array(2).fill().map(() => Array(3))\n for (let i = 0; i < 2; i++) \n for (let j = 0; j < 3; j++) \n this._depth[i][j] = Depth.NULL_VALUE\n \n \n }\n static depthAtLocation(location) {\n if (location === Location.EXTERIOR) return 0\n if (location === Location.INTERIOR) return 1\n return Depth.NULL_VALUE\n }\n getDepth(geomIndex, posIndex) {\n return this._depth[geomIndex][posIndex]\n }\n setDepth(geomIndex, posIndex, depthValue) {\n this._depth[geomIndex][posIndex] = depthValue\n }\n isNull() {\n if (arguments.length === 0) {\n for (let i = 0; i < 2; i++) \n for (let j = 0; j < 3; j++) \n if (this._depth[i][j] !== Depth.NULL_VALUE) return false\n \n \n return true\n } else if (arguments.length === 1) {\n const geomIndex = arguments[0]\n return this._depth[geomIndex][1] === Depth.NULL_VALUE\n } else if (arguments.length === 2) {\n const geomIndex = arguments[0], posIndex = arguments[1]\n return this._depth[geomIndex][posIndex] === Depth.NULL_VALUE\n }\n }\n normalize() {\n for (let i = 0; i < 2; i++) \n if (!this.isNull(i)) {\n let minDepth = this._depth[i][1]\n if (this._depth[i][2] < minDepth) minDepth = this._depth[i][2]\n if (minDepth < 0) minDepth = 0\n for (let j = 1; j < 3; j++) {\n let newValue = 0\n if (this._depth[i][j] > minDepth) newValue = 1\n this._depth[i][j] = newValue\n }\n }\n \n }\n getDelta(geomIndex) {\n return this._depth[geomIndex][Position.RIGHT] - this._depth[geomIndex][Position.LEFT]\n }\n getLocation(geomIndex, posIndex) {\n if (this._depth[geomIndex][posIndex] <= 0) return Location.EXTERIOR\n return Location.INTERIOR\n }\n toString() {\n return 'A: ' + this._depth[0][1] + ',' + this._depth[0][2] + ' B: ' + this._depth[1][1] + ',' + this._depth[1][2]\n }\n add() {\n if (arguments.length === 1) {\n const lbl = arguments[0]\n for (let i = 0; i < 2; i++) \n for (let j = 1; j < 3; j++) {\n const loc = lbl.getLocation(i, j)\n if (loc === Location.EXTERIOR || loc === Location.INTERIOR) \n if (this.isNull(i, j)) \n this._depth[i][j] = Depth.depthAtLocation(loc)\n else this._depth[i][j] += Depth.depthAtLocation(loc)\n \n }\n \n } else if (arguments.length === 3) {\n const geomIndex = arguments[0], posIndex = arguments[1], location = arguments[2]\n if (location === Location.INTERIOR) this._depth[geomIndex][posIndex]++\n }\n }\n}\nDepth.NULL_VALUE = -1\n","import Arrays from '../../../../java/util/Arrays.js'\nimport System from '../../../../java/lang/System.js'\nexport default class IntArrayList {\n constructor() {\n IntArrayList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._data = null\n this._size = 0\n if (arguments.length === 0) {\n IntArrayList.constructor_.call(this, 10)\n } else if (arguments.length === 1) {\n const initialCapacity = arguments[0]\n this._data = new Array(initialCapacity).fill(null)\n }\n }\n size() {\n return this._size\n }\n addAll(values) {\n if (values === null) return null\n if (values.length === 0) return null\n this.ensureCapacity(this._size + values.length)\n System.arraycopy(values, 0, this._data, this._size, values.length)\n this._size += values.length\n }\n ensureCapacity(capacity) {\n if (capacity <= this._data.length) return null\n const newLength = Math.max(capacity, this._data.length * 2)\n this._data = Arrays.copyOf(this._data, newLength)\n }\n toArray() {\n const array = new Array(this._size).fill(null)\n System.arraycopy(this._data, 0, array, 0, this._size)\n return array\n }\n add(value) {\n this.ensureCapacity(this._size + 1)\n this._data[this._size] = value\n ++ this._size\n }\n}\n","import IntArrayList from '../../util/IntArrayList.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Quadrant from '../Quadrant.js'\nexport default class MonotoneChainIndexer {\n static toIntArray(list) {\n const array = new Array(list.size()).fill(null)\n for (let i = 0; i < array.length; i++) \n array[i] = list.get(i).intValue()\n \n return array\n }\n findChainEnd(pts, start) {\n const chainQuad = Quadrant.quadrant(pts[start], pts[start + 1])\n let last = start + 1\n while (last < pts.length) {\n const quad = Quadrant.quadrant(pts[last - 1], pts[last])\n if (quad !== chainQuad) break\n last++\n }\n return last - 1\n }\n OLDgetChainStartIndices(pts) {\n let start = 0\n const startIndexList = new ArrayList()\n startIndexList.add(start)\n do {\n const last = this.findChainEnd(pts, start)\n startIndexList.add(last)\n start = last\n } while (start < pts.length - 1)\n const startIndex = MonotoneChainIndexer.toIntArray(startIndexList)\n return startIndex\n }\n getChainStartIndices(pts) {\n let start = 0\n const startIndexList = new IntArrayList(Math.trunc(pts.length / 2))\n startIndexList.add(start)\n do {\n const last = this.findChainEnd(pts, start)\n startIndexList.add(last)\n start = last\n } while (start < pts.length - 1)\n return startIndexList.toArray()\n }\n}\n","import MonotoneChainIndexer from './MonotoneChainIndexer.js'\nimport Envelope from '../../geom/Envelope.js'\nexport default class MonotoneChainEdge {\n constructor() {\n MonotoneChainEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.e = null\n this.pts = null\n this.startIndex = null\n const e = arguments[0]\n this.e = e\n this.pts = e.getCoordinates()\n const mcb = new MonotoneChainIndexer()\n this.startIndex = mcb.getChainStartIndices(this.pts)\n }\n getCoordinates() {\n return this.pts\n }\n getMaxX(chainIndex) {\n const x1 = this.pts[this.startIndex[chainIndex]].x\n const x2 = this.pts[this.startIndex[chainIndex + 1]].x\n return x1 > x2 ? x1 : x2\n }\n getMinX(chainIndex) {\n const x1 = this.pts[this.startIndex[chainIndex]].x\n const x2 = this.pts[this.startIndex[chainIndex + 1]].x\n return x1 < x2 ? x1 : x2\n }\n computeIntersectsForChain() {\n if (arguments.length === 4) {\n const chainIndex0 = arguments[0], mce = arguments[1], chainIndex1 = arguments[2], si = arguments[3]\n this.computeIntersectsForChain(this.startIndex[chainIndex0], this.startIndex[chainIndex0 + 1], mce, mce.startIndex[chainIndex1], mce.startIndex[chainIndex1 + 1], si)\n } else if (arguments.length === 6) {\n const start0 = arguments[0], end0 = arguments[1], mce = arguments[2], start1 = arguments[3], end1 = arguments[4], ei = arguments[5]\n if (end0 - start0 === 1 && end1 - start1 === 1) {\n ei.addIntersections(this.e, start0, mce.e, start1)\n return null\n }\n if (!this.overlaps(start0, end0, mce, start1, end1)) return null\n const mid0 = Math.trunc((start0 + end0) / 2)\n const mid1 = Math.trunc((start1 + end1) / 2)\n if (start0 < mid0) {\n if (start1 < mid1) this.computeIntersectsForChain(start0, mid0, mce, start1, mid1, ei)\n if (mid1 < end1) this.computeIntersectsForChain(start0, mid0, mce, mid1, end1, ei)\n }\n if (mid0 < end0) {\n if (start1 < mid1) this.computeIntersectsForChain(mid0, end0, mce, start1, mid1, ei)\n if (mid1 < end1) this.computeIntersectsForChain(mid0, end0, mce, mid1, end1, ei)\n }\n }\n }\n overlaps(start0, end0, mce, start1, end1) {\n return Envelope.intersects(this.pts[start0], this.pts[end0], mce.pts[start1], mce.pts[end1])\n }\n getStartIndexes() {\n return this.startIndex\n }\n computeIntersects(mce, si) {\n for (let i = 0; i < this.startIndex.length - 1; i++) \n for (let j = 0; j < mce.startIndex.length - 1; j++) \n this.computeIntersectsForChain(i, mce, j, si)\n \n \n }\n}\n","import EdgeIntersectionList from './EdgeIntersectionList.js'\nimport IntersectionMatrix from '../geom/IntersectionMatrix.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Label from './Label.js'\nimport Envelope from '../geom/Envelope.js'\nimport StringBuilder from '../../../../java/lang/StringBuilder.js'\nimport Depth from './Depth.js'\nimport GraphComponent from './GraphComponent.js'\nimport MonotoneChainEdge from './index/MonotoneChainEdge.js'\nimport Position from './Position.js'\nexport default class Edge extends GraphComponent {\n constructor() {\n super()\n Edge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.pts = null\n this._env = null\n this.eiList = new EdgeIntersectionList(this)\n this._name = null\n this._mce = null\n this._isIsolated = true\n this._depth = new Depth()\n this._depthDelta = 0\n if (arguments.length === 1) {\n const pts = arguments[0]\n Edge.constructor_.call(this, pts, null)\n } else if (arguments.length === 2) {\n const pts = arguments[0], label = arguments[1]\n this.pts = pts\n this._label = label\n }\n }\n static updateIM() {\n if (arguments.length === 2 && (arguments[1] instanceof IntersectionMatrix && arguments[0] instanceof Label)) {\n const label = arguments[0], im = arguments[1]\n im.setAtLeastIfValid(label.getLocation(0, Position.ON), label.getLocation(1, Position.ON), 1)\n if (label.isArea()) {\n im.setAtLeastIfValid(label.getLocation(0, Position.LEFT), label.getLocation(1, Position.LEFT), 2)\n im.setAtLeastIfValid(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), 2)\n }\n } else {\n return super.updateIM.apply(this, arguments)\n }\n }\n getDepth() {\n return this._depth\n }\n getCollapsedEdge() {\n const newPts = new Array(2).fill(null)\n newPts[0] = this.pts[0]\n newPts[1] = this.pts[1]\n const newe = new Edge(newPts, Label.toLineLabel(this._label))\n return newe\n }\n setIsolated(isIsolated) {\n this._isIsolated = isIsolated\n }\n setName(name) {\n this._name = name\n }\n equals(o) {\n if (!(o instanceof Edge)) return false\n const e = o\n if (this.pts.length !== e.pts.length) return false\n let isEqualForward = true\n let isEqualReverse = true\n let iRev = this.pts.length\n for (let i = 0; i < this.pts.length; i++) {\n if (!this.pts[i].equals2D(e.pts[i])) \n isEqualForward = false\n \n if (!this.pts[i].equals2D(e.pts[-- iRev])) \n isEqualReverse = false\n \n if (!isEqualForward && !isEqualReverse) return false\n }\n return true\n }\n getCoordinate() {\n if (arguments.length === 0) {\n if (this.pts.length > 0) return this.pts[0]\n return null\n } else if (arguments.length === 1) {\n const i = arguments[0]\n return this.pts[i]\n }\n }\n isClosed() {\n return this.pts[0].equals(this.pts[this.pts.length - 1])\n }\n getMaximumSegmentIndex() {\n return this.pts.length - 1\n }\n setDepthDelta(depthDelta) {\n this._depthDelta = depthDelta\n }\n getEdgeIntersectionList() {\n return this.eiList\n }\n addIntersections(li, segmentIndex, geomIndex) {\n for (let i = 0; i < li.getIntersectionNum(); i++) \n this.addIntersection(li, segmentIndex, geomIndex, i)\n \n }\n isIsolated() {\n return this._isIsolated\n }\n getCoordinates() {\n return this.pts\n }\n print(out) {\n out.print('edge ' + this._name + ': ')\n out.print('LINESTRING (')\n for (let i = 0; i < this.pts.length; i++) {\n if (i > 0) out.print(',')\n out.print(this.pts[i].x + ' ' + this.pts[i].y)\n }\n out.print(') ' + this._label + ' ' + this._depthDelta)\n }\n computeIM(im) {\n Edge.updateIM(this._label, im)\n }\n isCollapsed() {\n if (!this._label.isArea()) return false\n if (this.pts.length !== 3) return false\n if (this.pts[0].equals(this.pts[2])) return true\n return false\n }\n getDepthDelta() {\n return this._depthDelta\n }\n getNumPoints() {\n return this.pts.length\n }\n printReverse(out) {\n out.print('edge ' + this._name + ': ')\n for (let i = this.pts.length - 1; i >= 0; i--) \n out.print(this.pts[i] + ' ')\n \n out.println('')\n }\n getMonotoneChainEdge() {\n if (this._mce === null) this._mce = new MonotoneChainEdge(this)\n return this._mce\n }\n getEnvelope() {\n if (this._env === null) {\n this._env = new Envelope()\n for (let i = 0; i < this.pts.length; i++) \n this._env.expandToInclude(this.pts[i])\n \n }\n return this._env\n }\n addIntersection(li, segmentIndex, geomIndex, intIndex) {\n const intPt = new Coordinate(li.getIntersection(intIndex))\n let normalizedSegmentIndex = segmentIndex\n let dist = li.getEdgeDistance(geomIndex, intIndex)\n const nextSegIndex = normalizedSegmentIndex + 1\n if (nextSegIndex < this.pts.length) {\n const nextPt = this.pts[nextSegIndex]\n if (intPt.equals2D(nextPt)) {\n normalizedSegmentIndex = nextSegIndex\n dist = 0.0\n }\n }\n const ei = this.eiList.add(intPt, normalizedSegmentIndex, dist)\n }\n toString() {\n const builder = new StringBuilder()\n builder.append('edge ' + this._name + ': ')\n builder.append('LINESTRING (')\n for (let i = 0; i < this.pts.length; i++) {\n if (i > 0) builder.append(',')\n builder.append(this.pts[i].x + ' ' + this.pts[i].y)\n }\n builder.append(') ' + this._label + ' ' + this._depthDelta)\n return builder.toString()\n }\n isPointwiseEqual(e) {\n if (this.pts.length !== e.pts.length) return false\n for (let i = 0; i < this.pts.length; i++) \n if (!this.pts[i].equals2D(e.pts[i])) \n return false\n \n \n return true\n }\n}\n","import Location from '../../geom/Location.js'\nimport BufferSubgraph from './BufferSubgraph.js'\nimport Position from '../../geomgraph/Position.js'\nimport MCIndexNoder from '../../noding/MCIndexNoder.js'\nimport OffsetCurveBuilder from './OffsetCurveBuilder.js'\nimport Collections from '../../../../../java/util/Collections.js'\nimport Label from '../../geomgraph/Label.js'\nimport PlanarGraph from '../../geomgraph/PlanarGraph.js'\nimport PolygonBuilder from '../overlay/PolygonBuilder.js'\nimport GeometryFactory from '../../geom/GeometryFactory.js'\nimport SubgraphDepthLocater from './SubgraphDepthLocater.js'\nimport OffsetCurveSetBuilder from './OffsetCurveSetBuilder.js'\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory.js'\nimport EdgeList from '../../geomgraph/EdgeList.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector.js'\nimport IntersectionAdder from '../../noding/IntersectionAdder.js'\nimport Edge from '../../geomgraph/Edge.js'\nexport default class BufferBuilder {\n constructor() {\n BufferBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._bufParams = null\n this._workingPrecisionModel = null\n this._workingNoder = null\n this._geomFact = null\n this._graph = null\n this._edgeList = new EdgeList()\n const bufParams = arguments[0]\n this._bufParams = bufParams\n }\n static convertSegStrings(it) {\n const fact = new GeometryFactory()\n const lines = new ArrayList()\n while (it.hasNext()) {\n const ss = it.next()\n const line = fact.createLineString(ss.getCoordinates())\n lines.add(line)\n }\n return fact.buildGeometry(lines)\n }\n static depthDelta(label) {\n const lLoc = label.getLocation(0, Position.LEFT)\n const rLoc = label.getLocation(0, Position.RIGHT)\n if (lLoc === Location.INTERIOR && rLoc === Location.EXTERIOR) return 1; else if (lLoc === Location.EXTERIOR && rLoc === Location.INTERIOR) return -1\n return 0\n }\n createEmptyResultGeometry() {\n const emptyGeom = this._geomFact.createPolygon()\n return emptyGeom\n }\n getNoder(precisionModel) {\n if (this._workingNoder !== null) return this._workingNoder\n const noder = new MCIndexNoder()\n const li = new RobustLineIntersector()\n li.setPrecisionModel(precisionModel)\n noder.setSegmentIntersector(new IntersectionAdder(li))\n return noder\n }\n buffer(g, distance) {\n let precisionModel = this._workingPrecisionModel\n if (precisionModel === null) precisionModel = g.getPrecisionModel()\n this._geomFact = g.getFactory()\n const curveBuilder = new OffsetCurveBuilder(precisionModel, this._bufParams)\n const curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder)\n const bufferSegStrList = curveSetBuilder.getCurves()\n if (bufferSegStrList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n this.computeNodedEdges(bufferSegStrList, precisionModel)\n this._graph = new PlanarGraph(new OverlayNodeFactory())\n this._graph.addEdges(this._edgeList.getEdges())\n const subgraphList = this.createSubgraphs(this._graph)\n const polyBuilder = new PolygonBuilder(this._geomFact)\n this.buildSubgraphs(subgraphList, polyBuilder)\n const resultPolyList = polyBuilder.getPolygons()\n if (resultPolyList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n const resultGeom = this._geomFact.buildGeometry(resultPolyList)\n return resultGeom\n }\n computeNodedEdges(bufferSegStrList, precisionModel) {\n const noder = this.getNoder(precisionModel)\n noder.computeNodes(bufferSegStrList)\n const nodedSegStrings = noder.getNodedSubstrings()\n for (let i = nodedSegStrings.iterator(); i.hasNext(); ) {\n const segStr = i.next()\n const pts = segStr.getCoordinates()\n if (pts.length === 2 && pts[0].equals2D(pts[1])) continue\n const oldLabel = segStr.getData()\n const edge = new Edge(segStr.getCoordinates(), new Label(oldLabel))\n this.insertUniqueEdge(edge)\n }\n }\n setNoder(noder) {\n this._workingNoder = noder\n }\n setWorkingPrecisionModel(pm) {\n this._workingPrecisionModel = pm\n }\n insertUniqueEdge(e) {\n const existingEdge = this._edgeList.findEqualEdge(e)\n if (existingEdge !== null) {\n const existingLabel = existingEdge.getLabel()\n let labelToMerge = e.getLabel()\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel())\n labelToMerge.flip()\n }\n existingLabel.merge(labelToMerge)\n const mergeDelta = BufferBuilder.depthDelta(labelToMerge)\n const existingDelta = existingEdge.getDepthDelta()\n const newDelta = existingDelta + mergeDelta\n existingEdge.setDepthDelta(newDelta)\n } else {\n this._edgeList.add(e)\n e.setDepthDelta(BufferBuilder.depthDelta(e.getLabel()))\n }\n }\n buildSubgraphs(subgraphList, polyBuilder) {\n const processedGraphs = new ArrayList()\n for (let i = subgraphList.iterator(); i.hasNext(); ) {\n const subgraph = i.next()\n const p = subgraph.getRightmostCoordinate()\n const locater = new SubgraphDepthLocater(processedGraphs)\n const outsideDepth = locater.getDepth(p)\n subgraph.computeDepth(outsideDepth)\n subgraph.findResultEdges()\n processedGraphs.add(subgraph)\n polyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes())\n }\n }\n createSubgraphs(graph) {\n const subgraphList = new ArrayList()\n for (let i = graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (!node.isVisited()) {\n const subgraph = new BufferSubgraph()\n subgraph.create(node)\n subgraphList.add(subgraph)\n }\n }\n Collections.sort(subgraphList, Collections.reverseOrder())\n return subgraphList\n }\n}\n","import BufferParameters from './BufferParameters.js'\nimport ScaledNoder from '../../noding/ScaledNoder.js'\nimport TopologyException from '../../geom/TopologyException.js'\nimport MathUtil from '../../math/MathUtil.js'\nimport PrecisionModel from '../../geom/PrecisionModel.js'\nimport RuntimeException from '../../../../../java/lang/RuntimeException.js'\nimport MCIndexSnapRounder from '../../noding/snapround/MCIndexSnapRounder.js'\nimport Geometry from '../../geom/Geometry.js'\nimport BufferBuilder from './BufferBuilder.js'\nexport default class BufferOp {\n constructor() {\n BufferOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._argGeom = null\n this._distance = null\n this._bufParams = new BufferParameters()\n this._resultGeometry = null\n this._saveException = null\n if (arguments.length === 1) {\n const g = arguments[0]\n this._argGeom = g\n } else if (arguments.length === 2) {\n const g = arguments[0], bufParams = arguments[1]\n this._argGeom = g\n this._bufParams = bufParams\n }\n }\n static bufferOp() {\n if (arguments.length === 2) {\n const g = arguments[0], distance = arguments[1]\n const gBuf = new BufferOp(g)\n const geomBuf = gBuf.getResultGeometry(distance)\n return geomBuf\n } else if (arguments.length === 3) {\n if (Number.isInteger(arguments[2]) && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n } else if (arguments[2] instanceof BufferParameters && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], params = arguments[2]\n const bufOp = new BufferOp(g, params)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n } else if (arguments.length === 4) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2], endCapStyle = arguments[3]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n bufOp.setEndCapStyle(endCapStyle)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n }\n static precisionScaleFactor(g, distance, maxPrecisionDigits) {\n const env = g.getEnvelopeInternal()\n const envMax = MathUtil.max(Math.abs(env.getMaxX()), Math.abs(env.getMaxY()), Math.abs(env.getMinX()), Math.abs(env.getMinY()))\n const expandByDistance = distance > 0.0 ? distance : 0.0\n const bufEnvMax = envMax + 2 * expandByDistance\n const bufEnvPrecisionDigits = Math.trunc(Math.log(bufEnvMax) / Math.log(10) + 1.0)\n const minUnitLog10 = maxPrecisionDigits - bufEnvPrecisionDigits\n const scaleFactor = Math.pow(10.0, minUnitLog10)\n return scaleFactor\n }\n bufferFixedPrecision(fixedPM) {\n const noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.getScale())\n const bufBuilder = new BufferBuilder(this._bufParams)\n bufBuilder.setWorkingPrecisionModel(fixedPM)\n bufBuilder.setNoder(noder)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n }\n bufferReducedPrecision() {\n if (arguments.length === 0) {\n for (let precDigits = BufferOp.MAX_PRECISION_DIGITS; precDigits >= 0; precDigits--) {\n try {\n this.bufferReducedPrecision(precDigits)\n } catch (ex) {\n if (ex instanceof TopologyException) \n this._saveException = ex\n else throw ex\n } finally {}\n if (this._resultGeometry !== null) return null\n }\n throw this._saveException\n } else if (arguments.length === 1) {\n const precisionDigits = arguments[0]\n const sizeBasedScaleFactor = BufferOp.precisionScaleFactor(this._argGeom, this._distance, precisionDigits)\n const fixedPM = new PrecisionModel(sizeBasedScaleFactor)\n this.bufferFixedPrecision(fixedPM)\n }\n }\n bufferOriginalPrecision() {\n try {\n const bufBuilder = new BufferBuilder(this._bufParams)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n } catch (ex) {\n if (ex instanceof RuntimeException) \n this._saveException = ex\n else throw ex\n } finally {}\n }\n getResultGeometry(distance) {\n this._distance = distance\n this.computeGeometry()\n return this._resultGeometry\n }\n setEndCapStyle(endCapStyle) {\n this._bufParams.setEndCapStyle(endCapStyle)\n }\n computeGeometry() {\n this.bufferOriginalPrecision()\n if (this._resultGeometry !== null) return null\n const argPM = this._argGeom.getFactory().getPrecisionModel()\n if (argPM.getType() === PrecisionModel.FIXED) this.bufferFixedPrecision(argPM); else this.bufferReducedPrecision()\n }\n setQuadrantSegments(quadrantSegments) {\n this._bufParams.setQuadrantSegments(quadrantSegments)\n }\n}\nBufferOp.CAP_ROUND = BufferParameters.CAP_ROUND\nBufferOp.CAP_BUTT = BufferParameters.CAP_FLAT\nBufferOp.CAP_FLAT = BufferParameters.CAP_FLAT\nBufferOp.CAP_SQUARE = BufferParameters.CAP_SQUARE\nBufferOp.MAX_PRECISION_DIGITS = 12\n","import RuntimeException from '../../../../java/lang/RuntimeException.js'\nexport default class AssertionFailedException extends RuntimeException {\n constructor() {\n super()\n AssertionFailedException.constructor_.apply(this, arguments)\n }\n static constructor_() {\n if (arguments.length === 0) {\n RuntimeException.constructor_.call(this)\n } else if (arguments.length === 1) {\n const message = arguments[0]\n RuntimeException.constructor_.call(this, message)\n }\n }\n}\n","import AssertionFailedException from './AssertionFailedException.js'\nexport default class Assert {\n static isTrue() {\n if (arguments.length === 1) {\n const assertion = arguments[0]\n Assert.isTrue(assertion, null)\n } else if (arguments.length === 2) {\n const assertion = arguments[0], message = arguments[1]\n if (!assertion) \n if (message === null) \n throw new AssertionFailedException()\n else \n throw new AssertionFailedException(message)\n \n \n }\n }\n static shouldNeverReachHere() {\n if (arguments.length === 0) {\n Assert.shouldNeverReachHere(null)\n } else if (arguments.length === 1) {\n const message = arguments[0]\n throw new AssertionFailedException('Should never reach here' + (message !== null ? ': ' + message : ''))\n }\n }\n static equals() {\n if (arguments.length === 2) {\n const expectedValue = arguments[0], actualValue = arguments[1]\n Assert.equals(expectedValue, actualValue, null)\n } else if (arguments.length === 3) {\n const expectedValue = arguments[0], actualValue = arguments[1], message = arguments[2]\n if (!actualValue.equals(expectedValue)) \n throw new AssertionFailedException('Expected ' + expectedValue + ' but encountered ' + actualValue + (message !== null ? ': ' + message : ''))\n \n }\n }\n}\n","/**\n * @module ol/AssertionError\n */\n\n/** @type {Object} */\nconst messages = {\n 1: 'The view center is not defined',\n 2: 'The view resolution is not defined',\n 3: 'The view rotation is not defined',\n 4: '`image` and `src` cannot be provided at the same time',\n 5: '`imgSize` must be set when `image` is provided',\n 7: '`format` must be set when `url` is set',\n 8: 'Unknown `serverType` configured',\n 9: '`url` must be configured or set using `#setUrl()`',\n 10: 'The default `geometryFunction` can only handle `Point` geometries',\n 11: '`options.featureTypes` must be an Array',\n 12: '`options.geometryName` must also be provided when `options.bbox` is set',\n 13: 'Invalid corner',\n 14: 'Invalid color',\n 15: 'Tried to get a value for a key that does not exist in the cache',\n 16: 'Tried to set a value for a key that is used already',\n 17: '`resolutions` must be sorted in descending order',\n 18: 'Either `origin` or `origins` must be configured, never both',\n 19: 'Number of `tileSizes` and `resolutions` must be equal',\n 20: 'Number of `origins` and `resolutions` must be equal',\n 22: 'Either `tileSize` or `tileSizes` must be configured, never both',\n 24: 'Invalid extent or geometry provided as `geometry`',\n 25: 'Cannot fit empty extent provided as `geometry`',\n 26: 'Features must have an id set',\n 27: 'Features must have an id set',\n 28: '`renderMode` must be `\"hybrid\"` or `\"vector\"`',\n 30: 'The passed `feature` was already added to the source',\n 31: 'Tried to enqueue an `element` that was already added to the queue',\n 32: 'Transformation matrix cannot be inverted',\n 33: 'Invalid units',\n 34: 'Invalid geometry layout',\n 36: 'Unknown SRS type',\n 37: 'Unknown geometry type found',\n 38: '`styleMapValue` has an unknown type',\n 39: 'Unknown geometry type',\n 40: 'Expected `feature` to have a geometry',\n 41: 'Expected an `ol/style/Style` or an array of `ol/style/Style.js`',\n 42: 'Question unknown, the answer is 42',\n 43: 'Expected `layers` to be an array or a `Collection`',\n 47: 'Expected `controls` to be an array or an `ol/Collection`',\n 48: 'Expected `interactions` to be an array or an `ol/Collection`',\n 49: 'Expected `overlays` to be an array or an `ol/Collection`',\n 50: '`options.featureTypes` should be an Array',\n 51: 'Either `url` or `tileJSON` options must be provided',\n 52: 'Unknown `serverType` configured',\n 53: 'Unknown `tierSizeCalculation` configured',\n 55: 'The {-y} placeholder requires a tile grid with extent',\n 56: 'mapBrowserEvent must originate from a pointer event',\n 57: 'At least 2 conditions are required',\n 59: 'Invalid command found in the PBF',\n 60: 'Missing or invalid `size`',\n 61: 'Cannot determine IIIF Image API version from provided image information JSON',\n 62: 'A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`',\n 64: 'Layer opacity must be a number',\n 66: '`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has not been enabled. This is done by providing adequate shaders using the `hitVertexShader` and `hitFragmentShader` properties of `WebGLPointsLayerRenderer`',\n 67: 'A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both',\n 68: 'A VectorTile source can only be rendered if it has a projection compatible with the view projection',\n 69: '`width` or `height` cannot be provided together with `scale`',\n};\n\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nclass AssertionError extends Error {\n /**\n * @param {number} code Error code.\n */\n constructor(code) {\n const message = messages[code];\n\n super(message);\n\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @deprecated ol/AssertionError and error codes will be removed in v8.0\n * @api\n */\n this.code = code;\n\n /**\n * @type {string}\n */\n this.name = 'AssertionError';\n\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n this.message = message;\n }\n}\n\nexport default AssertionError;\n","/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n * @template T\n */\nexport class CollectionEvent extends Event {\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {T} element Element.\n * @param {number} index The index of the added or removed element.\n */\n constructor(type, element, index) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {T}\n * @api\n */\n this.element = element;\n\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n this.index = index;\n }\n}\n\n/***\n * @template T\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n /**\n * @param {Array} [array] Array.\n * @param {Options} [options] Collection options.\n */\n constructor(array, options) {\n super();\n\n /***\n * @type {CollectionOnSignature}\n */\n this.on;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.once;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.un;\n\n options = options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = array ? array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (index < 0 || index > this.getLength()) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n );\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n if (index < 0 || index >= this.getLength()) {\n return undefined;\n }\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index >= n) {\n this.insertAt(index, elem);\n return;\n }\n if (index < 0) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n )\n );\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [except] Optional index to ignore.\n */\n assertUnique_(elem, except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== except) {\n throw new AssertionError(58);\n }\n }\n }\n}\n\nexport default Collection;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n","/**\n * @module ol/DataTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\n\n/**\n * @typedef {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} ImageLike\n */\n\n/**\n * @typedef {Uint8Array|Uint8ClampedArray|Float32Array|DataView} ArrayLike\n */\n\n/**\n * Data that can be used with a DataTile.\n * @typedef {ArrayLike|ImageLike} Data\n */\n\n/**\n * @param {Data} data Tile data.\n * @return {ImageLike|null} The image-like data.\n */\nexport function asImageLike(data) {\n return data instanceof Image ||\n data instanceof HTMLCanvasElement ||\n data instanceof HTMLVideoElement\n ? data\n : null;\n}\n\n/**\n * @param {Data} data Tile data.\n * @return {ArrayLike|null} The array-like data.\n */\nexport function asArrayLike(data) {\n return data instanceof Uint8Array ||\n data instanceof Uint8ClampedArray ||\n data instanceof Float32Array ||\n data instanceof DataView\n ? data\n : null;\n}\n\n/**\n * @type {CanvasRenderingContext2D|null}\n */\nlet sharedContext = null;\n\n/**\n * @param {ImageLike} image The image.\n * @return {Uint8ClampedArray} The data.\n */\nexport function toArray(image) {\n if (!sharedContext) {\n sharedContext = createCanvasContext2D(\n image.width,\n image.height,\n undefined,\n {willReadFrequently: true}\n );\n }\n const canvas = sharedContext.canvas;\n const width = image.width;\n if (canvas.width !== width) {\n canvas.width = width;\n }\n const height = image.height;\n if (canvas.height !== height) {\n canvas.height = height;\n }\n sharedContext.clearRect(0, 0, width, height);\n sharedContext.drawImage(image, 0, 0);\n return sharedContext.getImageData(0, 0, width, height).data;\n}\n\n/**\n * @type {import('./size.js').Size}\n */\nconst defaultSize = [256, 256];\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @property {function(): Promise} loader Data loader. For loaders that generate images,\n * the promise should not resolve until the image is loaded.\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n * @property {import('./size.js').Size} [size=[256, 256]] Tile size.\n * @api\n */\n\nclass DataTile extends Tile {\n /**\n * @param {Options} options Tile options.\n */\n constructor(options) {\n const state = TileState.IDLE;\n\n super(options.tileCoord, state, {\n transition: options.transition,\n interpolate: options.interpolate,\n });\n\n /**\n * @type {function(): Promise}\n * @private\n */\n this.loader_ = options.loader;\n\n /**\n * @type {Data}\n * @private\n */\n this.data_ = null;\n\n /**\n * @type {Error}\n * @private\n */\n this.error_ = null;\n\n /**\n * @type {import('./size.js').Size|null}\n * @private\n */\n this.size_ = options.size || null;\n }\n\n /**\n * Get the tile size.\n * @return {import('./size.js').Size} Tile size.\n */\n getSize() {\n if (this.size_) {\n return this.size_;\n }\n const imageData = asImageLike(this.data_);\n if (imageData) {\n return [imageData.width, imageData.height];\n }\n return defaultSize;\n }\n\n /**\n * Get the data for the tile.\n * @return {Data} Tile data.\n * @api\n */\n getData() {\n return this.data_;\n }\n\n /**\n * Get any loading error.\n * @return {Error} Loading error.\n * @api\n */\n getError() {\n return this.error_;\n }\n\n /**\n * Load not yet loaded URI.\n * @api\n */\n load() {\n if (this.state !== TileState.IDLE && this.state !== TileState.ERROR) {\n return;\n }\n this.state = TileState.LOADING;\n this.changed();\n\n const self = this;\n this.loader_()\n .then(function (data) {\n self.data_ = data;\n self.state = TileState.LOADED;\n self.changed();\n })\n .catch(function (error) {\n self.error_ = error;\n self.state = TileState.ERROR;\n self.changed();\n });\n }\n}\n\nexport default DataTile;\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport {assert} from './asserts.js';\nimport {listen, unlistenByKey} from './events.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n\n/***\n * @template Geometry\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature.js';\n * import Polygon from 'ol/geom/Polygon.js';\n * import Point from 'ol/geom/Point.js';\n *\n * const feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon',\n * });\n *\n * // get the polygon geometry\n * const poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * const point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nclass Feature extends BaseObject {\n /**\n * @param {Geometry|ObjectWithGeometry} [geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(geometryOrProperties) {\n super();\n\n /***\n * @type {FeatureOnSignature}\n */\n this.on;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.once;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n if (geometryOrProperties) {\n if (\n typeof (\n /** @type {?} */ (geometryOrProperties).getSimplifiedGeometry\n ) === 'function'\n ) {\n const geometry = /** @type {Geometry} */ (geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = /** @type {Feature} */ (\n new Feature(this.hasProperties() ? this.getProperties() : null)\n );\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(\n geometry,\n EventType.CHANGE,\n this.handleGeometryChange_,\n this\n );\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setStyle(style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n }\n}\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(typeof (/** @type {?} */ (obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function () {\n return styles;\n };\n}\nexport default Feature;\n","/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport {IMAGE_DECODE} from './has.js';\nimport {getHeight} from './extent.js';\nimport {listenOnce, unlistenByKey} from './events.js';\n\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\n\nclass ImageWrapper extends ImageBase {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n * @param {CanvasRenderingContext2D} [context] Canvas context. When provided, the image will be\n * drawn into the context's canvas, and `getImage()` will return the canvas once the image\n * has finished loading.\n */\n constructor(\n extent,\n resolution,\n pixelRatio,\n src,\n crossOrigin,\n imageLoadFunction,\n context\n ) {\n super(extent, resolution, pixelRatio, ImageState.IDLE);\n\n /**\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n this.context_ = context;\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n this.state = ImageState.IDLE;\n\n /**\n * @private\n * @type {LoadFunction}\n */\n this.imageLoadFunction_ = imageLoadFunction;\n }\n\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n if (\n this.state == ImageState.LOADED &&\n this.context_ &&\n !(this.image_ instanceof HTMLCanvasElement)\n ) {\n const canvas = this.context_.canvas;\n canvas.width = this.image_.width;\n canvas.height = this.image_.height;\n this.context_.drawImage(this.image_, 0, 0);\n this.image_ = this.context_.canvas;\n }\n return this.image_;\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n load() {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n setImage(image) {\n this.image_ = image;\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n const img = /** @type {HTMLImageElement} */ (image);\n let listening = true;\n let decoding = false;\n let loaded = false;\n\n const listenerKeys = [\n listenOnce(img, EventType.LOAD, function () {\n loaded = true;\n if (!decoding) {\n loadHandler();\n }\n }),\n ];\n\n if (img.src && IMAGE_DECODE) {\n decoding = true;\n img\n .decode()\n .then(function () {\n if (listening) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening) {\n if (loaded) {\n loadHandler();\n } else {\n errorHandler();\n }\n }\n });\n } else {\n listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n }\n\n return function unlisten() {\n listening = false;\n listenerKeys.forEach(unlistenByKey);\n };\n}\n\nexport default ImageWrapper;\n","/**\n * @module ol/ImageBase\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport {abstract} from './util.js';\n\n/**\n * @abstract\n */\nclass ImageBase extends EventTarget {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n constructor(extent, resolution, pixelRatio, state) {\n super();\n\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n this.extent = extent;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = pixelRatio;\n\n /**\n * @protected\n * @type {number|undefined}\n */\n this.resolution = resolution;\n\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n this.state = state;\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n getExtent() {\n return this.extent;\n }\n\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n getImage() {\n return abstract();\n }\n\n /**\n * @return {number} PixelRatio.\n */\n getPixelRatio() {\n return this.pixelRatio_;\n }\n\n /**\n * @return {number} Resolution.\n */\n getResolution() {\n return /** @type {number} */ (this.resolution);\n }\n\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n load() {\n abstract();\n }\n}\n\nexport default ImageBase;\n","/**\n * @module ol/ImageCanvas\n */\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\n\n/**\n * A function that is called to trigger asynchronous canvas drawing. It is\n * called with a \"done\" callback that should be called when drawing is done.\n * If any error occurs during drawing, the \"done\" callback should be called with\n * that error.\n *\n * @typedef {function(function(Error=): void): void} Loader\n */\n\nclass ImageCanvas extends ImageBase {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {HTMLCanvasElement} canvas Canvas.\n * @param {Loader} [loader] Optional loader function to\n * support asynchronous canvas drawing.\n */\n constructor(extent, resolution, pixelRatio, canvas, loader) {\n const state = loader !== undefined ? ImageState.IDLE : ImageState.LOADED;\n\n super(extent, resolution, pixelRatio, state);\n\n /**\n * Optional canvas loader function.\n * @type {?Loader}\n * @private\n */\n this.loader_ = loader !== undefined ? loader : null;\n\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n this.canvas_ = canvas;\n\n /**\n * @private\n * @type {?Error}\n */\n this.error_ = null;\n }\n\n /**\n * Get any error associated with asynchronous rendering.\n * @return {?Error} Any error that occurred during rendering.\n */\n getError() {\n return this.error_;\n }\n\n /**\n * Handle async drawing complete.\n * @param {Error} [err] Any error during drawing.\n * @private\n */\n handleLoad_(err) {\n if (err) {\n this.error_ = err;\n this.state = ImageState.ERROR;\n } else {\n this.state = ImageState.LOADED;\n }\n this.changed();\n }\n\n /**\n * Load not yet loaded URI.\n */\n load() {\n if (this.state == ImageState.IDLE) {\n this.state = ImageState.LOADING;\n this.changed();\n this.loader_(this.handleLoad_.bind(this));\n }\n }\n\n /**\n * @return {HTMLCanvasElement} Canvas element.\n */\n getImage() {\n return this.canvas_;\n }\n}\n\nexport default ImageCanvas;\n","/**\n * @module ol/ImageState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {listenImage} from './Image.js';\n\nclass ImageTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [options] Tile options.\n */\n constructor(tileCoord, state, src, crossOrigin, tileLoadFunction, options) {\n super(tileCoord, state, options);\n\n /**\n * @private\n * @type {?string}\n */\n this.crossOrigin_ = crossOrigin;\n\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n this.key = src;\n\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n }\n\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n * @param {HTMLCanvasElement|HTMLImageElement} element Element.\n */\n setImage(element) {\n this.image_ = element;\n this.state = TileState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n const image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n } else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n *\n * To retry loading tiles on failed requests, use a custom `tileLoadFunction`\n * that checks for error status codes and reloads only when the status code is\n * 408, 429, 500, 502, 503 and 504, and only when not too many retries have been\n * made already:\n *\n * ```js\n * const retryCodes = [408, 429, 500, 502, 503, 504];\n * const retries = {};\n * source.setTileLoadFunction((tile, src) => {\n * const image = tile.getImage();\n * fetch(src)\n * .then((response) => {\n * if (retryCodes.includes(response.status)) {\n * retries[src] = (retries[src] || 0) + 1;\n * if (retries[src] <= 3) {\n * setTimeout(() => tile.load(), retries[src] * 1000);\n * }\n * return Promise.reject();\n * }\n * return response.blob();\n * })\n * .then((blob) => {\n * const imageUrl = URL.createObjectURL(blob);\n * image.src = imageUrl;\n * setTimeout(() => URL.revokeObjectURL(imageUrl), 5000);\n * })\n * .catch(() => tile.setState(3)); // error\n * });\n * ```\n *\n * @api\n */\n load() {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n const ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\n\nexport default ImageTile;\n","/**\n * @module ol/Kinetic\n */\n\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nclass Kinetic {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n constructor(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n begin() {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n update(x, y) {\n this.points_.push(x, y, Date.now());\n }\n\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n end() {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n const delay = Date.now() - this.delay_;\n const lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n\n // get the first point which still falls into the delay time\n let firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n\n const duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n\n const dx = this.points_[lastIndex] - this.points_[firstIndex];\n const dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n }\n\n /**\n * @return {number} Total distance travelled (pixels).\n */\n getDistance() {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n }\n\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n getAngle() {\n return this.angle_;\n }\n}\n\nexport default Kinetic;\n","/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport {TRUE} from '../functions.js';\nimport {abstract} from '../util.js';\nimport {compose as composeTransform, makeInverse} from '../transform.js';\nimport {getWidth} from '../extent.js';\nimport {shared as iconImageCache} from '../style/IconImageCache.js';\nimport {inView} from '../layer/Layer.js';\nimport {wrapX} from '../coordinate.js';\n\n/**\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback} callback Callback.\n * @template T\n */\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super();\n\n /**\n * @private\n * @type {import(\"../Map.js\").default}\n */\n this.map_ = map;\n }\n\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @protected\n */\n calculateMatrices2D(frameState) {\n const viewState = frameState.viewState;\n const coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n const pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n\n composeTransform(\n coordinateToPixelTransform,\n frameState.size[0] / 2,\n frameState.size[1] / 2,\n 1 / viewState.resolution,\n -1 / viewState.resolution,\n -viewState.rotation,\n -viewState.center[0],\n -viewState.center[1]\n );\n\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} 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 forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n callback,\n thisArg,\n layerFilter,\n thisArg2\n ) {\n let result;\n const viewState = frameState.viewState;\n\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 * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n\n const projection = viewState.projection;\n\n const translatedCoordinate = wrapX(coordinate.slice(), projection);\n const offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n const projectionExtent = projection.getExtent();\n const worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n\n const matches = /** @type {Array>} */ ([]);\n const tmpCoord = [];\n for (let i = 0; i < offsets.length; i++) {\n for (let j = numLayers - 1; j >= 0; --j) {\n const layerState = layerStates[j];\n const layer = layerState.layer;\n if (\n layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)\n ) {\n const layerRenderer = layer.getRenderer();\n const source = layer.getSource();\n if (layerRenderer && source) {\n const coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n const callback = forEachFeatureAtCoordinate.bind(\n null,\n layerState.managed\n );\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(\n tmpCoord,\n frameState,\n hitTolerance,\n callback,\n matches\n );\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n const order = 1 / matches.length;\n matches.forEach((m, i) => (m.distanceSq += i * order));\n matches.sort((a, b) => a.distanceSq - b.distanceSq);\n matches.some((m) => {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.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 hasFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n layerFilter,\n thisArg\n ) {\n const hasFeature = this.forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n TRUE,\n this,\n layerFilter,\n thisArg\n );\n\n return hasFeature !== undefined;\n }\n\n /**\n * @return {import(\"../Map.js\").default} Map.\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Render.\n * @abstract\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @protected\n */\n scheduleExpireIconCache(frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n }\n}\n\n/**\n * @param {import(\"../Map.js\").default} map Map.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\n\nexport default MapRenderer;\n","/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {checkedFonts} from '../render/canvas.js';\nimport {inView} from '../layer/Layer.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {replaceChildren} from '../dom.js';\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super(map);\n\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n this.fontChangeListenerKey_ = listen(\n checkedFonts,\n ObjectEventType.PROPERTYCHANGE,\n map.redrawText.bind(map)\n );\n\n /**\n * @private\n * @type {HTMLDivElement}\n */\n this.element_ = document.createElement('div');\n const style = this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n\n this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n\n const container = map.getViewport();\n container.insertBefore(this.element_, container.firstChild || null);\n\n /**\n * @private\n * @type {Array}\n */\n this.children_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n const map = this.getMap();\n if (map.hasListener(type)) {\n const event = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event);\n }\n }\n\n disposeInternal() {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n super.disposeInternal();\n }\n\n /**\n * Render.\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n\n const layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n const viewState = frameState.viewState;\n\n this.children_.length = 0;\n /**\n * @type {Array}\n */\n const declutterLayers = [];\n let previousElement = null;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n\n const layer = layerState.layer;\n const sourceState = layer.getSourceState();\n if (\n !inView(layerState, viewState) ||\n (sourceState != 'ready' && sourceState != 'undefined')\n ) {\n layer.unrender();\n continue;\n }\n\n const 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 if ('getDeclutter' in layer) {\n declutterLayers.push(\n /** @type {import(\"../layer/BaseVector.js\").default} */ (layer)\n );\n }\n }\n for (let i = declutterLayers.length - 1; i >= 0; --i) {\n declutterLayers[i].renderDeclutter(frameState);\n }\n\n replaceChildren(this.element_, this.children_);\n\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n\n this.scheduleExpireIconCache(frameState);\n }\n}\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/Map\n */\nimport BaseObject from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport EventType from './events/EventType.js';\nimport Layer from './layer/Layer.js';\nimport LayerGroup, {GroupEvent} from './layer/Group.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 ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, {getTilePriority} from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {TRUE} from './functions.js';\nimport {\n apply as applyTransform,\n create as createTransform,\n} from './transform.js';\nimport {assert} from './asserts.js';\nimport {\n clone,\n createOrUpdateEmpty,\n equals as equalsExtent,\n getForViewAndSize,\n isEmpty,\n} from './extent.js';\nimport {defaults as defaultControls} from './control/defaults.js';\nimport {defaults as defaultInteractions} from './interaction/defaults.js';\nimport {equals} from './array.js';\nimport {fromUserCoordinate, toUserCoordinate} from './proj.js';\nimport {getUid} from './util.js';\nimport {hasArea} from './size.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {removeNode} from './dom.js';\nimport {warn} from './console.js';\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {import(\"rbush\").default} declutterTree DeclutterTree.\n * @property {null|import(\"./extent.js\").Extent} extent Extent (in view projection coordinates).\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object>} usedTiles UsedTiles.\n * @property {Array} viewHints ViewHints.\n * @property {!Object>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object} renderTargets Identifiers of previously rendered elements.\n */\n\n/**\n * @typedef {function(Map, ?FrameState): any} PostRenderFunction\n */\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer~Layer 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 css 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 wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls] Controls.\n * @property {Collection} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection} overlays Overlays.\n * @property {Object} values Values.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} MapEventHandler\n */\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control/defaults.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.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. If passed by element, the container can be in a secondary document.\n * **Note:** CSS `transform` support for the target element is limited to `scale`.\n * @property {View|Promise} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n if (layer instanceof Layer) {\n layer.setMapInternal(null);\n return;\n }\n if (layer instanceof LayerGroup) {\n layer.getLayers().forEach(removeLayerMapProperty);\n }\n}\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {Map} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n if (layer instanceof Layer) {\n layer.setMapInternal(map);\n return;\n }\n if (layer instanceof LayerGroup) {\n const layers = layer.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n setLayerMapProperty(layers[i], map);\n }\n }\n}\n\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.js';\n * import View from 'ol/View.js';\n * import TileLayer from 'ol/layer/Tile.js';\n * import OSM from 'ol/source/OSM.js';\n *\n * const 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~TileLayer} 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~LayerGroup}\n * is a subclass of {@link module:ol/layer/Base~BaseLayer}, 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 * @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 */\nclass Map extends BaseObject {\n /**\n * @param {MapOptions} [options] Map options.\n */\n constructor(options) {\n super();\n\n options = options || {};\n\n /***\n * @type {MapEventHandler}\n */\n this.on;\n\n /***\n * @type {MapEventHandler}\n */\n this.once;\n\n /***\n * @type {MapEventHandler}\n */\n this.un;\n\n const optionsInternal = createOptionsInternal(options);\n\n /**\n * @private\n * @type {boolean|undefined}\n */\n this.renderComplete_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.loaded_ = true;\n\n /** @private */\n this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n /**\n * @type {number}\n * @private\n */\n this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n\n /**\n * @private\n * @type {*}\n */\n this.postRenderTimeoutHandle_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.animationDelayKey_;\n\n /**\n * @private\n */\n this.animationDelay_ = this.animationDelay_.bind(this);\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.coordinateToPixelTransform_ = createTransform();\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.pixelToCoordinateTransform_ = createTransform();\n\n /**\n * @private\n * @type {number}\n */\n this.frameIndex_ = 0;\n\n /**\n * @private\n * @type {?FrameState}\n */\n this.frameState_ = null;\n\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n this.previousExtent_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewPropertyListenerKey_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewChangeListenerKey_ = null;\n\n /**\n * @private\n * @type {?Array}\n */\n this.layerGroupPropertyListenerKeys_ = null;\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.viewport_ = document.createElement('div');\n this.viewport_.className =\n '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 /**\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_.style.pointerEvents = 'none';\n this.overlayContainer_.className = 'ol-overlaycontainer';\n this.viewport_.appendChild(this.overlayContainer_);\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainerStopEvent_ = document.createElement('div');\n this.overlayContainerStopEvent_.style.position = 'absolute';\n this.overlayContainerStopEvent_.style.zIndex = '0';\n this.overlayContainerStopEvent_.style.width = '100%';\n this.overlayContainerStopEvent_.style.height = '100%';\n this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n this.mapBrowserEventHandler_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.moveTolerance_ = options.moveTolerance;\n\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n /**\n * @private\n * @type {?Array}\n */\n this.targetChangeHandlerKeys_ = null;\n\n /**\n * @private\n * @type {HTMLElement|null}\n */\n this.targetElement_ = null;\n\n /**\n * @type {ResizeObserver}\n */\n this.resizeObserver_ = new ResizeObserver(() => this.updateSize());\n\n /**\n * @type {Collection}\n * @protected\n */\n this.controls = optionsInternal.controls || defaultControls();\n\n /**\n * @type {Collection}\n * @protected\n */\n this.interactions =\n optionsInternal.interactions ||\n defaultInteractions({\n onFocusOnly: true,\n });\n\n /**\n * @type {Collection}\n * @private\n */\n this.overlays_ = optionsInternal.overlays;\n\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n this.overlayIdIndex_ = {};\n\n /**\n * @type {import(\"./renderer/Map.js\").default|null}\n * @private\n */\n this.renderer_ = null;\n\n /**\n * @private\n * @type {!Array}\n */\n this.postRenderFunctions_ = [];\n\n /**\n * @private\n * @type {TileQueue}\n */\n this.tileQueue_ = new TileQueue(\n this.getTilePriority.bind(this),\n this.handleTileChange_.bind(this)\n );\n\n this.addChangeListener(\n MapProperty.LAYERGROUP,\n this.handleLayerGroupChanged_\n );\n this.addChangeListener(MapProperty.VIEW, this.handleViewChanged_);\n this.addChangeListener(MapProperty.SIZE, this.handleSizeChanged_);\n this.addChangeListener(MapProperty.TARGET, this.handleTargetChanged_);\n\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n this.setProperties(optionsInternal.values);\n\n const map = this;\n if (options.view && !(options.view instanceof View)) {\n options.view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n this.controls.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.controls.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n this.addOverlayInternal_(event.element);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n const id = event.element.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }\n );\n\n this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n */\n (control) => {\n control.setMap(this);\n }\n );\n\n this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n */\n (interaction) => {\n interaction.setMap(this);\n }\n );\n\n this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n }\n\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n addControl(control) {\n this.getControls().push(control);\n }\n\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteractions()` 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 addInteraction(interaction) {\n this.getInteractions().push(interaction);\n }\n\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n addLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n * @private\n */\n handleLayerAdd_(event) {\n setLayerMapProperty(event.layer, this);\n }\n\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n addOverlay(overlay) {\n this.getOverlays().push(overlay);\n }\n\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n addOverlayInternal_(overlay) {\n const id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n }\n\n /**\n *\n * Clean up.\n */\n disposeInternal() {\n this.controls.clear();\n this.interactions.clear();\n this.overlays_.clear();\n this.resizeObserver_.disconnect();\n this.setTarget(null);\n super.disposeInternal();\n }\n\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.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 feature} or\n * {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n * the {@link module:ol/layer/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} [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 T\n * @api\n */\n forEachFeatureAtPixel(pixel, callback, options) {\n if (!this.frameState_ || !this.renderer_) {\n return;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n callback,\n null,\n layerFilter,\n null\n );\n }\n\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n getFeaturesAtPixel(pixel, options) {\n const features = [];\n this.forEachFeatureAtPixel(\n pixel,\n function (feature) {\n features.push(feature);\n },\n options\n );\n return features;\n }\n\n /**\n * Get all layers from all layer groups.\n * @return {Array} Layers.\n * @api\n */\n getAllLayers() {\n const layers = [];\n function addLayersFrom(layerGroup) {\n layerGroup.forEach(function (layer) {\n if (layer instanceof LayerGroup) {\n addLayersFrom(layer.getLayers());\n } else {\n layers.push(layer);\n }\n });\n }\n addLayersFrom(this.getLayers());\n return layers;\n }\n\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through the `layerFilter` option.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n hasFeatureAtPixel(pixel, options) {\n if (!this.frameState_ || !this.renderer_) {\n return false;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n layerFilter,\n null\n );\n }\n\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n getEventCoordinate(event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n }\n\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n getEventCoordinateInternal(event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n }\n\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent|{clientX: number, clientY: number}} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n getEventPixel(event) {\n const viewport = this.viewport_;\n const viewportPosition = viewport.getBoundingClientRect();\n const viewportSize = this.getSize();\n const scaleX = viewportPosition.width / viewportSize[0];\n const scaleY = viewportPosition.height / viewportSize[1];\n const eventPosition =\n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n\n return [\n (eventPosition.clientX - viewportPosition.left) / scaleX,\n (eventPosition.clientY - viewportPosition.top) / scaleY,\n ];\n }\n\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n getTarget() {\n return /** @type {HTMLElement|string|undefined} */ (\n this.get(MapProperty.TARGET)\n );\n }\n\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n getTargetElement() {\n return this.targetElement_;\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 getCoordinateFromPixel(pixel) {\n return toUserCoordinate(\n this.getCoordinateFromPixelInternal(pixel),\n this.getView().getProjection()\n );\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n getCoordinateFromPixelInternal(pixel) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\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 getControls() {\n return this.controls;\n }\n\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n getOverlays() {\n return this.overlays_;\n }\n\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n getOverlayById(id) {\n const overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n }\n\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n getInteractions() {\n return this.interactions;\n }\n\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n getLayerGroup() {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n }\n\n /**\n * Clear any existing layers and add layers to the map.\n * @param {Array|Collection} layers The layers to be added to the map.\n * @api\n */\n setLayers(layers) {\n const group = this.getLayerGroup();\n if (layers instanceof Collection) {\n group.setLayers(layers);\n return;\n }\n\n const collection = group.getLayers();\n collection.clear();\n collection.extend(layers);\n }\n\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n getLayers() {\n const layers = this.getLayerGroup().getLayers();\n return layers;\n }\n\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n getLoadingOrNotReady() {\n const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const state = layerStatesArray[i];\n if (!state.visible) {\n continue;\n }\n const renderer = state.layer.getRenderer();\n if (renderer && !renderer.ready) {\n return true;\n }\n const source = state.layer.getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n }\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 getPixelFromCoordinate(coordinate) {\n const viewCoordinate = fromUserCoordinate(\n coordinate,\n this.getView().getProjection()\n );\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n getPixelFromCoordinateInternal(coordinate) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n return applyTransform(\n frameState.coordinateToPixelTransform,\n coordinate.slice(0, 2)\n );\n }\n\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default|null} Renderer\n */\n getRenderer() {\n return this.renderer_;\n }\n\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n getSize() {\n return /** @type {import(\"./size.js\").Size|undefined} */ (\n this.get(MapProperty.SIZE)\n );\n }\n\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n getView() {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n }\n\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n getViewport() {\n return this.viewport_;\n }\n\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n getOverlayContainer() {\n return this.overlayContainer_;\n }\n\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n getOverlayContainerStopEvent() {\n return this.overlayContainerStopEvent_;\n }\n\n /**\n * @return {!Document} The document where the map is displayed.\n */\n getOwnerDocument() {\n const targetElement = this.getTargetElement();\n return targetElement ? targetElement.ownerDocument : document;\n }\n\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(\n this.frameState_,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n );\n }\n\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string} [type] Type.\n */\n handleBrowserEvent(browserEvent, type) {\n type = type || browserEvent.type;\n const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n }\n\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n handleMapBrowserEvent(mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n const originalEvent = /** @type {PointerEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const eventType = originalEvent.type;\n if (\n eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN\n ) {\n const doc = this.getOwnerDocument();\n const rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n const target = /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)\n ) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n const interactionsArray = this.getInteractions().getArray().slice();\n for (let i = interactionsArray.length - 1; i >= 0; i--) {\n const interaction = interactionsArray[i];\n if (\n interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()\n ) {\n continue;\n }\n const cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\n break;\n }\n }\n }\n }\n\n /**\n * @protected\n */\n handlePostRender() {\n const frameState = this.frameState_;\n\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n const tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n let maxTotalLoading = this.maxTilesLoading_;\n let maxNewLoads = maxTotalLoading;\n if (frameState) {\n const hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n const lowOnFrameBudget = 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\n if (frameState && this.renderer_ && !frameState.animate) {\n if (this.renderComplete_ === true) {\n if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n this.renderer_.dispatchRenderEvent(\n RenderEventType.RENDERCOMPLETE,\n frameState\n );\n }\n if (this.loaded_ === false) {\n this.loaded_ = true;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADEND, this, frameState)\n );\n }\n } else if (this.loaded_ === true) {\n this.loaded_ = false;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADSTART, this, frameState)\n );\n }\n }\n\n const postRenderFunctions = this.postRenderFunctions_;\n for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n }\n\n /**\n * @private\n */\n handleSizeChanged_() {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n handleTargetChanged_() {\n if (this.mapBrowserEventHandler_) {\n for (let i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.targetChangeHandlerKeys_[i]);\n }\n this.targetChangeHandlerKeys_ = null;\n this.viewport_.removeEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_\n );\n this.viewport_.removeEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_\n );\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n\n if (this.targetElement_) {\n this.resizeObserver_.unobserve(this.targetElement_);\n const rootNode = this.targetElement_.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.unobserve(rootNode.host);\n }\n this.setSize(undefined);\n }\n\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n\n const target = this.getTarget();\n const targetElement =\n typeof target === 'string' ? document.getElementById(target) : target;\n this.targetElement_ = targetElement;\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\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 } else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = new CompositeMapRenderer(this);\n }\n\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(\n this,\n this.moveTolerance_\n );\n for (const key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(\n MapBrowserEventType[key],\n this.handleMapBrowserEvent.bind(this)\n );\n }\n this.viewport_.addEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_,\n false\n );\n this.viewport_.addEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n\n const keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.targetChangeHandlerKeys_ = [\n listen(\n keyboardEventTarget,\n EventType.KEYDOWN,\n this.handleBrowserEvent,\n this\n ),\n listen(\n keyboardEventTarget,\n EventType.KEYPRESS,\n this.handleBrowserEvent,\n this\n ),\n ];\n const rootNode = targetElement.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.observe(rootNode.host);\n }\n this.resizeObserver_.observe(targetElement);\n }\n\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n }\n\n /**\n * @private\n */\n handleTileChange_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewPropertyChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewChanged_() {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n const view = this.getView();\n if (view) {\n this.updateViewportSize_();\n\n this.viewPropertyListenerKey_ = listen(\n view,\n ObjectEventType.PROPERTYCHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n this.viewChangeListenerKey_ = listen(\n view,\n EventType.CHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n\n view.resolveConstraints(0);\n }\n this.render();\n }\n\n /**\n * @private\n */\n handleLayerGroupChanged_() {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n const layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n listen(layerGroup, 'removelayer', this.handleLayerRemove_, this),\n ];\n }\n this.render();\n }\n\n /**\n * @return {boolean} Is rendered.\n */\n isRendered() {\n return !!this.frameState_;\n }\n\n /**\n * @private\n */\n animationDelay_() {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }\n\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n renderSync() {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n }\n\n /**\n * Redraws all text after new fonts have loaded\n */\n redrawText() {\n const layerStates = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStates.length; i < ii; ++i) {\n const layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n }\n\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n render() {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n }\n\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n removeControl(control) {\n return this.getControls().remove(control);\n }\n\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n removeInteraction(interaction) {\n return this.getInteractions().remove(interaction);\n }\n\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n removeLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n * @private\n */\n handleLayerRemove_(event) {\n removeLayerMapProperty(event.layer);\n }\n\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n removeOverlay(overlay) {\n return this.getOverlays().remove(overlay);\n }\n\n /**\n * @param {number} time Time.\n * @private\n */\n renderFrame_(time) {\n const size = this.getSize();\n const view = this.getView();\n const previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n let frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n const viewHints = view.getHints(\n this.frameState_ ? this.frameState_.viewHints : undefined\n );\n const viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterTree: null,\n extent: getForViewAndSize(\n viewState.center,\n viewState.resolution,\n viewState.rotation,\n size\n ),\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 mapId: getUid(this),\n renderTargets: {},\n };\n if (viewState.nextCenter && viewState.nextResolution) {\n const rotation = isNaN(viewState.nextRotation)\n ? viewState.rotation\n : viewState.nextRotation;\n\n frameState.nextExtent = getForViewAndSize(\n viewState.nextCenter,\n viewState.nextResolution,\n rotation,\n size\n );\n }\n }\n\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(\n this.postRenderFunctions_,\n frameState.postRenderFunctions\n );\n\n if (previousFrameState) {\n const moveStart =\n !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equalsExtent(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVESTART, this, previousFrameState)\n );\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n\n const idle =\n this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equalsExtent(frameState.extent, this.previousExtent_);\n\n if (idle) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVEEND, this, frameState)\n );\n clone(frameState.extent, this.previousExtent_);\n }\n }\n\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n this.renderComplete_ =\n this.hasListener(MapEventType.LOADSTART) ||\n this.hasListener(MapEventType.LOADEND) ||\n this.hasListener(RenderEventType.RENDERCOMPLETE)\n ? !this.tileQueue_.getTilesLoading() &&\n !this.tileQueue_.getCount() &&\n !this.getLoadingOrNotReady()\n : undefined;\n\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(() => {\n this.postRenderTimeoutHandle_ = undefined;\n this.handlePostRender();\n }, 0);\n }\n }\n\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n setLayerGroup(layerGroup) {\n const oldLayerGroup = this.getLayerGroup();\n if (oldLayerGroup) {\n this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n }\n this.set(MapProperty.LAYERGROUP, layerGroup);\n }\n\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n setSize(size) {\n this.set(MapProperty.SIZE, size);\n }\n\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string} [target] The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n setTarget(target) {\n this.set(MapProperty.TARGET, target);\n }\n\n /**\n * Set the view for this map.\n * @param {View|Promise} view The view that controls this map.\n * It is also possible to pass a promise that resolves to options for constructing a view. This\n * alternative allows view properties to be resolved by sources or other components that load\n * view-related metadata.\n * @observable\n * @api\n */\n setView(view) {\n if (!view || view instanceof View) {\n this.set(MapProperty.VIEW, view);\n return;\n }\n this.set(MapProperty.VIEW, new View());\n\n const map = this;\n view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n updateSize() {\n const targetElement = this.getTargetElement();\n\n let size = undefined;\n if (targetElement) {\n const computedStyle = getComputedStyle(targetElement);\n const width =\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']);\n const height =\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']);\n if (!isNaN(width) && !isNaN(height)) {\n size = [width, height];\n if (\n !hasArea(size) &&\n !!(\n targetElement.offsetWidth ||\n targetElement.offsetHeight ||\n targetElement.getClientRects().length\n )\n ) {\n warn(\n \"No map visible because the map container's width or height are 0.\"\n );\n }\n }\n }\n\n const oldSize = this.getSize();\n if (size && (!oldSize || !equals(size, oldSize))) {\n this.setSize(size);\n this.updateViewportSize_();\n }\n }\n\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n updateViewportSize_() {\n const view = this.getView();\n if (view) {\n let size = undefined;\n const 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}\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n let keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n\n /**\n * @type {Object}\n */\n const values = {};\n\n const layerGroup =\n options.layers &&\n typeof (/** @type {?} */ (options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({\n layers:\n /** @type {Collection|Array} */ (\n options.layers\n ),\n });\n values[MapProperty.LAYERGROUP] = layerGroup;\n\n values[MapProperty.TARGET] = options.target;\n\n values[MapProperty.VIEW] =\n options.view instanceof View ? options.view : new View();\n\n /** @type {Collection} */\n let controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.controls).getArray) === 'function',\n 47\n ); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = options.controls;\n }\n }\n\n /** @type {Collection} */\n let interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.interactions).getArray) ===\n 'function',\n 48\n ); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = options.interactions;\n }\n }\n\n /** @type {Collection} */\n let overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.overlays).getArray) === 'function',\n 49\n ); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n } else {\n overlays = new Collection();\n }\n\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default Map;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nclass MapBrowserEvent extends MapEvent {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean} [dragging] Is the map currently being dragged?\n * @param {import(\"./Map.js\").FrameState} [frameState] Frame state.\n * @param {Array} [activePointers] Active pointers.\n */\n constructor(type, map, originalEvent, dragging, frameState, activePointers) {\n super(type, map, frameState);\n\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n this.originalEvent = originalEvent;\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n this.pixel_ = null;\n\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.coordinate_ = null;\n\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n this.dragging = dragging !== undefined ? dragging : false;\n\n /**\n * @type {Array|undefined}\n */\n this.activePointers = activePointers;\n }\n\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get pixel() {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n }\n set pixel(pixel) {\n this.pixel_ = pixel;\n }\n\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get coordinate() {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n }\n set coordinate(coordinate) {\n this.coordinate_ = coordinate;\n }\n\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n preventDefault() {\n super.preventDefault();\n if ('preventDefault' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n }\n }\n\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n stopPropagation() {\n super.stopPropagation();\n if ('stopPropagation' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n }\n }\n}\n\nexport default MapBrowserEvent;\n","/**\n * @module ol/MapBrowserEventHandler\n */\n\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport Target from './events/Target.js';\nimport {PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {listen, unlistenByKey} from './events.js';\n\nclass MapBrowserEventHandler extends Target {\n /**\n * @param {import(\"./Map.js\").default} map The map with the viewport to listen to events on.\n * @param {number} [moveTolerance] The minimal distance the pointer must travel to trigger a move.\n */\n constructor(map, moveTolerance) {\n super(map);\n\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./Map.js\").default}\n * @private\n */\n this.map_ = map;\n\n /**\n * @type {any}\n * @private\n */\n this.clickTimeoutId_;\n\n /**\n * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n this.emulateClicks_ = false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_ = false;\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * @type {number}\n * @private\n */\n this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent|null}\n * @private\n */\n this.down_ = null;\n\n const element = this.map_.getViewport();\n\n /**\n * @type {Array}\n * @private\n */\n this.activePointers_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedTouches_ = {};\n\n this.element_ = element;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.pointerdownListenerKey_ = listen(\n element,\n PointerEventType.POINTERDOWN,\n this.handlePointerDown_,\n this\n );\n\n /**\n * @type {PointerEvent}\n * @private\n */\n this.originalPointerMoveEvent_;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.relayedListenerKey_ = listen(\n element,\n PointerEventType.POINTERMOVE,\n this.relayMoveEvent_,\n this\n );\n\n /**\n * @private\n */\n this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);\n\n this.element_.addEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n emulateClick_(pointerEvent) {\n let newEvent = new MapBrowserEvent(\n MapBrowserEventType.CLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(\n MapBrowserEventType.DBLCLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n } else {\n // click\n this.clickTimeoutId_ = setTimeout(() => {\n this.clickTimeoutId_ = undefined;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.SINGLECLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n }, 250);\n }\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 updateActivePointers_(pointerEvent) {\n const event = pointerEvent;\n const id = event.pointerId;\n\n if (\n event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL\n ) {\n delete this.trackedTouches_[id];\n for (const pointerId in this.trackedTouches_) {\n if (this.trackedTouches_[pointerId].target !== event.target) {\n // Some platforms assign a new pointerId when the target changes.\n // If this happens, delete one tracked pointer. If there is more\n // than one tracked pointer for the old target, it will be cleared\n // by subsequent POINTERUP events from other pointers.\n delete this.trackedTouches_[pointerId];\n break;\n }\n }\n } else if (\n event.type == MapBrowserEventType.POINTERDOWN ||\n event.type == MapBrowserEventType.POINTERMOVE\n ) {\n this.trackedTouches_[id] = event;\n }\n this.activePointers_ = Object.values(this.trackedTouches_);\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerUp_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERUP,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.preventDefault().\n if (\n this.emulateClicks_ &&\n !newEvent.defaultPrevented &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)\n ) {\n this.emulateClick_(this.down_);\n }\n\n if (this.activePointers_.length === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n isMouseActionButton_(pointerEvent) {\n return pointerEvent.button === 0;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerDown_(pointerEvent) {\n this.emulateClicks_ = this.activePointers_.length === 0;\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDOWN,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n this.down_ = new PointerEvent(pointerEvent.type, pointerEvent);\n Object.defineProperty(this.down_, 'target', {\n writable: false,\n value: pointerEvent.target,\n });\n\n if (this.dragListenerKeys_.length === 0) {\n const doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(\n doc,\n MapBrowserEventType.POINTERMOVE,\n this.handlePointerMove_,\n this\n ),\n listen(doc, 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(\n this.element_,\n MapBrowserEventType.POINTERCANCEL,\n this.handlePointerUp_,\n this\n )\n );\n if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(\n listen(\n this.element_.getRootNode(),\n MapBrowserEventType.POINTERUP,\n this.handlePointerUp_,\n this\n )\n );\n }\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerMove_(pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.updateActivePointers_(pointerEvent);\n this.dragging_ = true;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDRAG,\n this.map_,\n pointerEvent,\n this.dragging_,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n }\n }\n\n /**\n * Wrap and relay a pointermove event.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n relayMoveEvent_(pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(\n new MapBrowserEvent(\n MapBrowserEventType.POINTERMOVE,\n this.map_,\n pointerEvent,\n dragging\n )\n );\n }\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 handleTouchMove_(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 const originalEvent = this.originalPointerMoveEvent_;\n if (\n (!originalEvent || originalEvent.defaultPrevented) &&\n (typeof event.cancelable !== 'boolean' || event.cancelable === true)\n ) {\n event.preventDefault();\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n isMoving_(pointerEvent) {\n return (\n this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_\n );\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_\n );\n\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n\n this.element_ = null;\n super.disposeInternal();\n }\n}\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n\n/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {?import(\"./Map.js\").FrameState} [frameState] Frame state.\n */\n constructor(type, map, frameState) {\n super(type);\n\n /**\n * The map where the event occurred.\n * @type {import(\"./Map.js\").default}\n * @api\n */\n this.map = map;\n\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./Map.js\").FrameState}\n * @api\n */\n this.frameState = frameState !== undefined ? frameState : null;\n }\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapEventType\n */\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 /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n\n /**\n * Triggered when loading of additional map data (tiles, images, features) starts.\n * @event module:ol/MapEvent~MapEvent#loadstart\n * @api\n */\n LOADSTART: 'loadstart',\n\n /**\n * Triggered when loading of additional map data has completed.\n * @event module:ol/MapEvent~MapEvent#loadend\n * @api\n */\n LOADEND: 'loadend',\n};\n\n/***\n * @typedef {'postrender'|'movestart'|'moveend'|'loadstart'|'loadend'} Types\n */\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n","/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport {getUid} from './util.js';\nimport {isEmpty} from './obj.js';\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n constructor(type, key, oldValue) {\n super(type);\n\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n this.key = key;\n\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n this.oldValue = oldValue;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ObjectOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable~Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nclass BaseObject extends Observable {\n /**\n * @param {Object} [values] An object with key-value pairs.\n */\n constructor(values) {\n super();\n\n /***\n * @type {ObjectOnSignature}\n */\n this.on;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.once;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.un;\n\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(this);\n\n /**\n * @private\n * @type {Object}\n */\n this.values_ = null;\n\n if (values !== undefined) {\n this.setProperties(values);\n }\n }\n\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n get(key) {\n let value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n }\n\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n getKeys() {\n return (this.values_ && Object.keys(this.values_)) || [];\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n getProperties() {\n return (this.values_ && Object.assign({}, this.values_)) || {};\n }\n\n /**\n * @return {boolean} The object has properties.\n */\n hasProperties() {\n return !!this.values_;\n }\n\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n notify(key, oldValue) {\n let eventType;\n eventType = `change:${key}`;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n eventType = ObjectEventType.PROPERTYCHANGE;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n addChangeListener(key, listener) {\n this.addEventListener(`change:${key}`, listener);\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n removeChangeListener(key, listener) {\n this.removeEventListener(`change:${key}`, listener);\n }\n\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n set(key, value, silent) {\n const values = this.values_ || (this.values_ = {});\n if (silent) {\n values[key] = value;\n } else {\n const oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n }\n\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n setProperties(values, silent) {\n for (const key in values) {\n this.set(key, values[key], silent);\n }\n }\n\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n applyProperties(source) {\n if (!source.values_) {\n return;\n }\n Object.assign(this.values_ || (this.values_ = {}), source.values_);\n }\n\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [silent] Unset without triggering an event.\n * @api\n */\n unset(key, silent) {\n if (this.values_ && key in this.values_) {\n const oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!silent) {\n this.notify(key, oldValue);\n }\n }\n }\n}\n\nexport default BaseObject;\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n\n/**\n * @typedef {'propertychange'} Types\n */\n","/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport {listen, listenOnce, unlistenByKey} from './events.js';\n\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n\n/***\n * @template Return\n * @typedef {OnSignature & CombinedOnSignature} ObservableOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nclass Observable extends EventTarget {\n constructor() {\n super();\n\n this.on =\n /** @type {ObservableOnSignature} */ (\n this.onInternal\n );\n\n this.once =\n /** @type {ObservableOnSignature} */ (\n this.onceInternal\n );\n\n this.un = /** @type {ObservableOnSignature} */ (this.unInternal);\n\n /**\n * @private\n * @type {number}\n */\n this.revision_ = 0;\n }\n\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n changed() {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n getRevision() {\n return this.revision_;\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onInternal(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n return listen(this, /** @type {string} */ (type), listener);\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onceInternal(type, listener) {\n let key;\n if (Array.isArray(type)) {\n const len = type.length;\n key = new Array(len);\n for (let i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n } else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n }\n\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n unInternal(type, listener) {\n const key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n } else if (Array.isArray(type)) {\n for (let i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n } else {\n this.removeEventListener(type, listener);\n }\n }\n}\n\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (let i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n } else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\n\nexport default Observable;\n","/**\n * @module ol/Overlay\n */\nimport BaseObject from './Object.js';\nimport MapEventType from './MapEventType.js';\nimport {CLASS_SELECTABLE} from './css.js';\nimport {containsExtent} from './extent.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {outerHeight, outerWidth, removeChildren, removeNode} from './dom.js';\n\n/**\n * @typedef {'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-center' | 'center-right' | 'top-left' | 'top-center' | 'top-right'} Positioning\n * The overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, or `'top-right'`.\n */\n\n/**\n * @typedef {Object} Options\n * @property {number|string} [id] Set the overlay id. The overlay id can be used\n * with the {@link module:ol/Map~Map#getOverlayById} method.\n * @property {HTMLElement} [element] The overlay element.\n * @property {Array} [offset=[0, 0]] Offsets in pixels used when positioning\n * the overlay. The first element in the\n * array is the horizontal offset. A positive value shifts the overlay right.\n * The second element in the array is the vertical offset. A positive value\n * shifts the overlay down.\n * @property {import(\"./coordinate.js\").Coordinate} [position] The overlay position\n * in map projection.\n * @property {Positioning} [positioning='top-left'] Defines how\n * the overlay is actually positioned with respect to its `position` property.\n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, and `'top-right'`.\n * @property {boolean} [stopEvent=true] Whether event propagation to the map\n * viewport should be stopped. If `true` the overlay is placed in the same\n * container as that of the controls (CSS class name\n * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container\n * with CSS class name specified by the `className` property.\n * @property {boolean} [insertFirst=true] Whether the overlay is inserted first\n * in the overlay container, or appended. If the overlay is placed in the same\n * container as that of the controls (see the `stopEvent` option) you will\n * probably set `insertFirst` to `true` so the overlay is displayed below the\n * controls.\n * @property {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling\n * `setPosition`, so that the overlay is entirely visible in the current viewport.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\n */\n\n/**\n * @typedef {Object} PanOptions\n * @property {number} [duration=1000] The duration of the animation in\n * milliseconds.\n * @property {function(number):number} [easing] The easing function to use. Can\n * be one from {@link module:ol/easing} or a custom function.\n * Default is {@link module:ol/easing.inAndOut}.\n */\n\n/**\n * @typedef {Object} PanIntoViewOptions\n * @property {PanOptions} [animation={}] The animation parameters for the pan\n * @property {number} [margin=20] The margin (in pixels) between the\n * overlay and the borders of the map when panning into view.\n */\n\n/**\n * @enum {string}\n * @protected\n */\nconst Property = {\n ELEMENT: 'element',\n MAP: 'map',\n OFFSET: 'offset',\n POSITION: 'position',\n POSITIONING: 'positioning',\n};\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:element'|'change:map'|'change:offset'|'change:position'|\n * 'change:positioning'} OverlayObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} OverlayOnSignature\n */\n\n/**\n * @classdesc\n * An element to be displayed over the map and attached to a single map\n * location. Like {@link module:ol/control/Control~Control}, Overlays are\n * visible widgets. Unlike Controls, they are not in a fixed position on the\n * screen, but are tied to a geographical coordinate, so panning the map will\n * move an Overlay but not a Control.\n *\n * Example:\n *\n * import Overlay from 'ol/Overlay.js';\n *\n * // ...\n * const popup = new Overlay({\n * element: document.getElementById('popup'),\n * });\n * popup.setPosition(coordinate);\n * map.addOverlay(popup);\n *\n * @api\n */\nclass Overlay extends BaseObject {\n /**\n * @param {Options} options Overlay options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {OverlayOnSignature}\n */\n this.on;\n\n /***\n * @type {OverlayOnSignature}\n */\n this.once;\n\n /***\n * @type {OverlayOnSignature}\n */\n this.un;\n\n /**\n * @protected\n * @type {Options}\n */\n this.options = options;\n\n /**\n * @protected\n * @type {number|string|undefined}\n */\n this.id = options.id;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.insertFirst =\n options.insertFirst !== undefined ? options.insertFirst : true;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = document.createElement('div');\n this.element.className =\n options.className !== undefined\n ? options.className\n : 'ol-overlay-container ' + CLASS_SELECTABLE;\n this.element.style.position = 'absolute';\n this.element.style.pointerEvents = 'auto';\n\n /**\n * @protected\n * @type {PanIntoViewOptions|undefined}\n */\n this.autoPan = options.autoPan === true ? {} : options.autoPan || undefined;\n\n /**\n * @protected\n * @type {{transform_: string,\n * visible: boolean}}\n */\n this.rendered = {\n transform_: '',\n visible: true,\n };\n\n /**\n * @protected\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.mapPostrenderListenerKey = null;\n\n this.addChangeListener(Property.ELEMENT, this.handleElementChanged);\n this.addChangeListener(Property.MAP, this.handleMapChanged);\n this.addChangeListener(Property.OFFSET, this.handleOffsetChanged);\n this.addChangeListener(Property.POSITION, this.handlePositionChanged);\n this.addChangeListener(Property.POSITIONING, this.handlePositioningChanged);\n\n if (options.element !== undefined) {\n this.setElement(options.element);\n }\n\n this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);\n\n this.setPositioning(options.positioning || 'top-left');\n\n if (options.position !== undefined) {\n this.setPosition(options.position);\n }\n }\n\n /**\n * Get the DOM element of this overlay.\n * @return {HTMLElement|undefined} The Element containing the overlay.\n * @observable\n * @api\n */\n getElement() {\n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));\n }\n\n /**\n * Get the overlay identifier which is set on constructor.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get the map associated with this overlay.\n * @return {import(\"./Map.js\").default|null} The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n getMap() {\n return /** @type {import(\"./Map.js\").default|null} */ (\n this.get(Property.MAP) || null\n );\n }\n\n /**\n * Get the offset of this overlay.\n * @return {Array} The offset.\n * @observable\n * @api\n */\n getOffset() {\n return /** @type {Array} */ (this.get(Property.OFFSET));\n }\n\n /**\n * Get the current position of this overlay.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The spatial point that the overlay is\n * anchored at.\n * @observable\n * @api\n */\n getPosition() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(Property.POSITION)\n );\n }\n\n /**\n * Get the current positioning of this overlay.\n * @return {Positioning} How the overlay is positioned\n * relative to its point on the map.\n * @observable\n * @api\n */\n getPositioning() {\n return /** @type {Positioning} */ (this.get(Property.POSITIONING));\n }\n\n /**\n * @protected\n */\n handleElementChanged() {\n removeChildren(this.element);\n const element = this.getElement();\n if (element) {\n this.element.appendChild(element);\n }\n }\n\n /**\n * @protected\n */\n handleMapChanged() {\n if (this.mapPostrenderListenerKey) {\n removeNode(this.element);\n unlistenByKey(this.mapPostrenderListenerKey);\n this.mapPostrenderListenerKey = null;\n }\n const map = this.getMap();\n if (map) {\n this.mapPostrenderListenerKey = listen(\n map,\n MapEventType.POSTRENDER,\n this.render,\n this\n );\n this.updatePixelPosition();\n const container = this.stopEvent\n ? map.getOverlayContainerStopEvent()\n : map.getOverlayContainer();\n if (this.insertFirst) {\n container.insertBefore(this.element, container.childNodes[0] || null);\n } else {\n container.appendChild(this.element);\n }\n this.performAutoPan();\n }\n }\n\n /**\n * @protected\n */\n render() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handleOffsetChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handlePositionChanged() {\n this.updatePixelPosition();\n this.performAutoPan();\n }\n\n /**\n * @protected\n */\n handlePositioningChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * Set the DOM element to be associated with this overlay.\n * @param {HTMLElement|undefined} element The Element containing the overlay.\n * @observable\n * @api\n */\n setElement(element) {\n this.set(Property.ELEMENT, element);\n }\n\n /**\n * Set the map to be associated with this overlay.\n * @param {import(\"./Map.js\").default|null} map The map that the\n * overlay is part of. Pass `null` to just remove the overlay from the current map.\n * @observable\n * @api\n */\n setMap(map) {\n this.set(Property.MAP, map);\n }\n\n /**\n * Set the offset for this overlay.\n * @param {Array} offset Offset.\n * @observable\n * @api\n */\n setOffset(offset) {\n this.set(Property.OFFSET, offset);\n }\n\n /**\n * Set the position for this overlay. If the position is `undefined` the\n * overlay is hidden.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} position The spatial point that the overlay\n * is anchored at.\n * @observable\n * @api\n */\n setPosition(position) {\n this.set(Property.POSITION, position);\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary) using the configured autoPan parameters\n * @protected\n */\n performAutoPan() {\n if (this.autoPan) {\n this.panIntoView(this.autoPan);\n }\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary).\n * @param {PanIntoViewOptions} [panIntoViewOptions] Options for the pan action\n * @api\n */\n panIntoView(panIntoViewOptions) {\n const map = this.getMap();\n\n if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {\n return;\n }\n\n const mapRect = this.getRect(map.getTargetElement(), map.getSize());\n const element = this.getElement();\n const overlayRect = this.getRect(element, [\n outerWidth(element),\n outerHeight(element),\n ]);\n\n panIntoViewOptions = panIntoViewOptions || {};\n\n const myMargin =\n panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;\n if (!containsExtent(mapRect, overlayRect)) {\n // the overlay is not completely inside the viewport, so pan the map\n const offsetLeft = overlayRect[0] - mapRect[0];\n const offsetRight = mapRect[2] - overlayRect[2];\n const offsetTop = overlayRect[1] - mapRect[1];\n const offsetBottom = mapRect[3] - overlayRect[3];\n\n const delta = [0, 0];\n if (offsetLeft < 0) {\n // move map to the left\n delta[0] = offsetLeft - myMargin;\n } else if (offsetRight < 0) {\n // move map to the right\n delta[0] = Math.abs(offsetRight) + myMargin;\n }\n if (offsetTop < 0) {\n // move map up\n delta[1] = offsetTop - myMargin;\n } else if (offsetBottom < 0) {\n // move map down\n delta[1] = Math.abs(offsetBottom) + myMargin;\n }\n\n if (delta[0] !== 0 || delta[1] !== 0) {\n const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n map.getView().getCenterInternal()\n );\n const centerPx = map.getPixelFromCoordinateInternal(center);\n if (!centerPx) {\n return;\n }\n const newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];\n\n const panOptions = panIntoViewOptions.animation || {};\n map.getView().animateInternal({\n center: map.getCoordinateFromPixelInternal(newCenterPx),\n duration: panOptions.duration,\n easing: panOptions.easing,\n });\n }\n }\n }\n\n /**\n * Get the extent of an element relative to the document\n * @param {HTMLElement} element The element.\n * @param {import(\"./size.js\").Size} size The size of the element.\n * @return {import(\"./extent.js\").Extent} The extent.\n * @protected\n */\n getRect(element, size) {\n const box = element.getBoundingClientRect();\n const offsetX = box.left + window.pageXOffset;\n const offsetY = box.top + window.pageYOffset;\n return [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];\n }\n\n /**\n * Set the positioning for this overlay.\n * @param {Positioning} positioning how the overlay is\n * positioned relative to its point on the map.\n * @observable\n * @api\n */\n setPositioning(positioning) {\n this.set(Property.POSITIONING, positioning);\n }\n\n /**\n * Modify the visibility of the element.\n * @param {boolean} visible Element visibility.\n * @protected\n */\n setVisible(visible) {\n if (this.rendered.visible !== visible) {\n this.element.style.display = visible ? '' : 'none';\n this.rendered.visible = visible;\n }\n }\n\n /**\n * Update pixel position.\n * @protected\n */\n updatePixelPosition() {\n const map = this.getMap();\n const position = this.getPosition();\n if (!map || !map.isRendered() || !position) {\n this.setVisible(false);\n return;\n }\n\n const pixel = map.getPixelFromCoordinate(position);\n const mapSize = map.getSize();\n this.updateRenderedPosition(pixel, mapSize);\n }\n\n /**\n * @param {import(\"./pixel.js\").Pixel} pixel The pixel location.\n * @param {import(\"./size.js\").Size|undefined} mapSize The map size.\n * @protected\n */\n updateRenderedPosition(pixel, mapSize) {\n const style = this.element.style;\n const offset = this.getOffset();\n\n const positioning = this.getPositioning();\n\n this.setVisible(true);\n\n const x = Math.round(pixel[0] + offset[0]) + 'px';\n const y = Math.round(pixel[1] + offset[1]) + 'px';\n let posX = '0%';\n let posY = '0%';\n if (\n positioning == 'bottom-right' ||\n positioning == 'center-right' ||\n positioning == 'top-right'\n ) {\n posX = '-100%';\n } else if (\n positioning == 'bottom-center' ||\n positioning == 'center-center' ||\n positioning == 'top-center'\n ) {\n posX = '-50%';\n }\n if (\n positioning == 'bottom-left' ||\n positioning == 'bottom-center' ||\n positioning == 'bottom-right'\n ) {\n posY = '-100%';\n } else if (\n positioning == 'center-left' ||\n positioning == 'center-center' ||\n positioning == 'center-right'\n ) {\n posY = '-50%';\n }\n const transform = `translate(${posX}, ${posY}) translate(${x}, ${y})`;\n if (this.rendered.transform_ != transform) {\n this.rendered.transform_ = transform;\n style.transform = transform;\n }\n }\n\n /**\n * returns the options this Overlay has been created with\n * @return {Options} overlay options\n */\n getOptions() {\n return this.options;\n }\n}\n\nexport default Overlay;\n","/**\n * @module ol/Tile\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport TileState from './TileState.js';\nimport {abstract} from './util.js';\nimport {easeIn} from './easing.js';\n\n/**\n * A function that takes an {@link module:ol/Tile~Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState.js';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * const xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * const data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n\n/**\n * {@link module:ol/source/Tile~TileSource} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection~Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n * @api\n */\n\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nclass Tile extends EventTarget {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {Options} [options] Tile options.\n */\n constructor(tileCoord, state, options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n this.tileCoord = tileCoord;\n\n /**\n * @protected\n * @type {import(\"./TileState.js\").default}\n */\n this.state = state;\n\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile}\n */\n this.interimTile = null;\n\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n this.key = '';\n\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n this.transition_ =\n options.transition === undefined ? 250 : options.transition;\n\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n this.transitionStarts_ = {};\n\n /**\n * @type {boolean}\n */\n this.interpolate = !!options.interpolate;\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Called by the tile cache when the tile is removed from the cache due to expiry\n */\n release() {\n if (this.state === TileState.ERROR) {\n // to remove the `change` listener on this tile in `ol/TileQueue#handleTileChange`\n this.setState(TileState.EMPTY);\n }\n }\n\n /**\n * @return {string} Key.\n */\n getKey() {\n return this.key + '/' + this.tileCoord;\n }\n\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n getInterimTile() {\n if (!this.interimTile) {\n //empty chain\n return this;\n }\n let tile = this.interimTile;\n\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n // Show tile immediately instead of fading it in after loading, because\n // the interim tile is in place already\n this.transition_ = 0;\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n\n // we can not find a better tile\n return this;\n }\n\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n refreshInterimChain() {\n if (!this.interimTile) {\n return;\n }\n\n let tile = this.interimTile;\n\n /**\n * @type {Tile}\n */\n let prev = this;\n\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n } else if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n } else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n } else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n }\n\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n getTileCoord() {\n return this.tileCoord;\n }\n\n /**\n * @return {import(\"./TileState.js\").default} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {import(\"./TileState.js\").default} state State.\n * @api\n */\n setState(state) {\n if (this.state !== TileState.ERROR && this.state > state) {\n throw new Error('Tile load sequence violation');\n }\n this.state = state;\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n load() {\n abstract();\n }\n\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n getAlpha(id, time) {\n if (!this.transition_) {\n return 1;\n }\n\n let start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n } else if (start === -1) {\n return 1;\n }\n\n const delta = time - start + 1000 / 60; // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n }\n\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n inTransition(id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n }\n\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n endTransition(id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n }\n}\n\nexport default Tile;\n","/**\n * @module ol/TileCache\n */\nimport LRUCache from './structs/LRUCache.js';\nimport {fromKey, getKey} from './tilecoord.js';\n\nclass TileCache extends LRUCache {\n clear() {\n while (this.getCount() > 0) {\n this.pop().release();\n }\n super.clear();\n }\n\n /**\n * @param {!Object} usedTiles Used tiles.\n */\n expireCache(usedTiles) {\n while (this.canExpireCache()) {\n const tile = this.peekLast();\n if (tile.getKey() in usedTiles) {\n break;\n } else {\n this.pop().release();\n }\n }\n }\n\n /**\n * Prune all tiles from the cache that don't have the same z as the newest tile.\n */\n pruneExceptNewestZ() {\n if (this.getCount() === 0) {\n return;\n }\n const key = this.peekFirstKey();\n const tileCoord = fromKey(key);\n const z = tileCoord[0];\n this.forEach((tile) => {\n if (tile.tileCoord[0] !== z) {\n this.remove(getKey(tile.tileCoord));\n tile.release();\n }\n });\n }\n}\n\nexport default TileCache;\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n constructor(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n }\n\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n dequeue() {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n } else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n const elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n }\n\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n const priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n }\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.elements_.length;\n }\n\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n getLeftChildIndex_(index) {\n return index * 2 + 1;\n }\n\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n getRightChildIndex_(index) {\n return index * 2 + 2;\n }\n\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n getParentIndex_(index) {\n return (index - 1) >> 1;\n }\n\n /**\n * Make this a heap. O(N).\n * @private\n */\n heapify_() {\n let i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n }\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.elements_.length === 0;\n }\n\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n isKeyQueued(key) {\n return key in this.queuedElements_;\n }\n\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n isQueued(element) {\n return this.isKeyQueued(this.keyFunction_(element));\n }\n\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n siftUp_(index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const count = elements.length;\n const element = elements[index];\n const priority = priorities[index];\n const startIndex = index;\n\n while (index < count >> 1) {\n const lIndex = this.getLeftChildIndex_(index);\n const rIndex = this.getRightChildIndex_(index);\n\n const smallerChildIndex =\n rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n }\n\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n siftDown_(startIndex, index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[index];\n const priority = priorities[index];\n\n while (index > startIndex) {\n const parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n } else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n reprioritize() {\n const priorityFunction = this.priorityFunction_;\n const elements = this.elements_;\n const priorities = this.priorities_;\n let index = 0;\n const n = elements.length;\n let element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n } else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n }\n}\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, {DROP} from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\n\nclass TileQueue extends PriorityQueue {\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n constructor(tilePriorityFunction, tileChangeCallback) {\n super(\n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n },\n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }\n );\n\n /** @private */\n this.boundHandleTileChange_ = this.handleTileChange.bind(this);\n\n /**\n * @private\n * @type {function(): ?}\n */\n this.tileChangeCallback_ = tileChangeCallback;\n\n /**\n * @private\n * @type {number}\n */\n this.tilesLoading_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.tilesLoadingKeys_ = {};\n }\n\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n const added = super.enqueue(element);\n if (added) {\n const tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n }\n\n /**\n * @return {number} Number of tiles loading.\n */\n getTilesLoading() {\n return this.tilesLoading_;\n }\n\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n const state = tile.getState();\n if (\n state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY\n ) {\n if (state !== TileState.ERROR) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n const tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n }\n\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n loadMoreTiles(maxTotalLoading, maxNewLoads) {\n let newLoads = 0;\n let state, tile, tileKey;\n while (\n this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0\n ) {\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}\n\nexport default TileQueue;\n\n/**\n * @param {import('./Map.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(\n frameState,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n) {\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 const center = frameState.viewState.center;\n const deltaX = tileCenter[0] - center[0];\n const deltaY = tileCenter[1] - center[1];\n return (\n 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution\n );\n}\n","/**\n * @module ol/TileRange\n */\n\n/**\n * A representation of a contiguous block of tiles. A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nclass TileRange {\n /**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n */\n constructor(minX, maxX, minY, maxY) {\n /**\n * @type {number}\n */\n this.minX = minX;\n\n /**\n * @type {number}\n */\n this.maxX = maxX;\n\n /**\n * @type {number}\n */\n this.minY = minY;\n\n /**\n * @type {number}\n */\n this.maxY = maxY;\n }\n\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {boolean} Contains tile coordinate.\n */\n contains(tileCoord) {\n return this.containsXY(tileCoord[1], tileCoord[2]);\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Contains.\n */\n containsTileRange(tileRange) {\n return (\n this.minX <= tileRange.minX &&\n tileRange.maxX <= this.maxX &&\n this.minY <= tileRange.minY &&\n tileRange.maxY <= this.maxY\n );\n }\n\n /**\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @return {boolean} Contains coordinate.\n */\n containsXY(x, y) {\n return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Equals.\n */\n equals(tileRange) {\n return (\n this.minX == tileRange.minX &&\n this.minY == tileRange.minY &&\n this.maxX == tileRange.maxX &&\n this.maxY == tileRange.maxY\n );\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n */\n extend(tileRange) {\n if (tileRange.minX < this.minX) {\n this.minX = tileRange.minX;\n }\n if (tileRange.maxX > this.maxX) {\n this.maxX = tileRange.maxX;\n }\n if (tileRange.minY < this.minY) {\n this.minY = tileRange.minY;\n }\n if (tileRange.maxY > this.maxY) {\n this.maxY = tileRange.maxY;\n }\n }\n\n /**\n * @return {number} Height.\n */\n getHeight() {\n return this.maxY - this.minY + 1;\n }\n\n /**\n * @return {import(\"./size.js\").Size} Size.\n */\n getSize() {\n return [this.getWidth(), this.getHeight()];\n }\n\n /**\n * @return {number} Width.\n */\n getWidth() {\n return this.maxX - this.minX + 1;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Intersects.\n */\n intersects(tileRange) {\n return (\n this.minX <= tileRange.maxX &&\n this.maxX >= tileRange.minX &&\n this.minY <= tileRange.maxY &&\n this.maxY >= tileRange.minY\n );\n }\n}\n\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange} [tileRange] TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n if (tileRange !== undefined) {\n tileRange.minX = minX;\n tileRange.maxX = maxX;\n tileRange.minY = minY;\n tileRange.maxY = maxY;\n return tileRange;\n }\n return new TileRange(minX, maxX, minY, maxY);\n}\n\nexport default TileRange;\n","/**\n * @module ol/TileState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/VectorRenderTile\n */\nimport Tile from './Tile.js';\nimport {createCanvasContext2D, releaseCanvas} from './dom.js';\nimport {getUid} from './util.js';\n\n/**\n * @typedef {Object} ReplayState\n * @property {boolean} dirty Dirty.\n * @property {null|import(\"./render.js\").OrderFunction} renderedRenderOrder RenderedRenderOrder.\n * @property {number} renderedTileRevision RenderedTileRevision.\n * @property {number} renderedResolution RenderedResolution.\n * @property {number} renderedRevision RenderedRevision.\n * @property {number} renderedTileResolution RenderedTileResolution.\n * @property {number} renderedTileZ RenderedTileZ.\n */\n\n/**\n * @type {Array}\n */\nconst canvasPool = [];\n\nclass VectorRenderTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {import(\"./tilecoord.js\").TileCoord} urlTileCoord Wrapped tile coordinate for source urls.\n * @param {function(VectorRenderTile):Array} getSourceTiles Function\n * to get source tiles for this tile.\n */\n constructor(tileCoord, state, urlTileCoord, getSourceTiles) {\n super(tileCoord, state, {transition: 0});\n\n /**\n * @private\n * @type {!Object}\n */\n this.context_ = {};\n\n /**\n * Executor groups by layer uid. Entries are read/written by the renderer.\n * @type {Object>}\n */\n this.executorGroups = {};\n\n /**\n * Executor groups for decluttering, by layer uid. Entries are read/written by the renderer.\n * @type {Object>}\n */\n this.declutterExecutorGroups = {};\n\n /**\n * Number of loading source tiles. Read/written by the source.\n * @type {number}\n */\n this.loadingSourceTiles = 0;\n\n /**\n * @type {Object}\n */\n this.hitDetectionImageData = {};\n\n /**\n * @private\n * @type {!Object}\n */\n this.replayState_ = {};\n\n /**\n * @type {Array}\n */\n this.sourceTiles = [];\n\n /**\n * @type {Object}\n */\n this.errorTileKeys = {};\n\n /**\n * @type {number}\n */\n this.wantedResolution;\n\n /**\n * @type {!function():Array}\n */\n this.getSourceTiles = getSourceTiles.bind(undefined, this);\n\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n this.wrappedTileCoord = urlTileCoord;\n }\n\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {CanvasRenderingContext2D} The rendering context.\n */\n getContext(layer) {\n const key = getUid(layer);\n if (!(key in this.context_)) {\n this.context_[key] = createCanvasContext2D(1, 1, canvasPool);\n }\n return this.context_[key];\n }\n\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {boolean} Tile has a rendering context for the given layer.\n */\n hasContext(layer) {\n return getUid(layer) in this.context_;\n }\n\n /**\n * Get the Canvas for this tile.\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {HTMLCanvasElement} Canvas.\n */\n getImage(layer) {\n return this.hasContext(layer) ? this.getContext(layer).canvas : null;\n }\n\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {ReplayState} The replay state.\n */\n getReplayState(layer) {\n const key = getUid(layer);\n if (!(key in this.replayState_)) {\n this.replayState_[key] = {\n dirty: false,\n renderedRenderOrder: null,\n renderedResolution: NaN,\n renderedRevision: -1,\n renderedTileResolution: NaN,\n renderedTileRevision: -1,\n renderedTileZ: -1,\n };\n }\n return this.replayState_[key];\n }\n\n /**\n * Load the tile.\n */\n load() {\n this.getSourceTiles();\n }\n\n /**\n * Remove from the cache due to expiry\n */\n release() {\n for (const key in this.context_) {\n const context = this.context_[key];\n releaseCanvas(context);\n canvasPool.push(context.canvas);\n delete this.context_[key];\n }\n super.release();\n }\n}\n\nexport default VectorRenderTile;\n","/**\n * @module ol/VectorTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\n\nclass VectorTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Data source url.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [options] Tile options.\n */\n constructor(tileCoord, state, src, format, tileLoadFunction, options) {\n super(tileCoord, state, options);\n\n /**\n * Extent of this tile; set by the source.\n * @type {import(\"./extent.js\").Extent}\n */\n this.extent = null;\n\n /**\n * @private\n * @type {import(\"./format/Feature.js\").default}\n */\n this.format_ = format;\n\n /**\n * @private\n * @type {Array}\n */\n this.features_ = null;\n\n /**\n * @private\n * @type {import(\"./featureloader.js\").FeatureLoader}\n */\n this.loader_;\n\n /**\n * Feature projection of this tile; set by the source.\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection = null;\n\n /**\n * Resolution of this tile; set by the source.\n * @type {number}\n */\n this.resolution;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n\n /**\n * @private\n * @type {string}\n */\n this.url_ = src;\n\n this.key = src;\n }\n\n /**\n * Get the feature format assigned for reading this tile's features.\n * @return {import(\"./format/Feature.js\").default} Feature format.\n * @api\n */\n getFormat() {\n return this.format_;\n }\n\n /**\n * Get the features for this tile. Geometries will be in the view projection.\n * @return {Array} Features.\n * @api\n */\n getFeatures() {\n return this.features_;\n }\n\n /**\n * Load not yet loaded URI.\n */\n load() {\n if (this.state == TileState.IDLE) {\n this.setState(TileState.LOADING);\n this.tileLoadFunction_(this, this.url_);\n if (this.loader_) {\n this.loader_(this.extent, this.resolution, this.projection);\n }\n }\n }\n\n /**\n * Handler for successful tile load.\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data projection.\n */\n onLoad(features, dataProjection) {\n this.setFeatures(features);\n }\n\n /**\n * Handler for tile load errors.\n */\n onError() {\n this.setState(TileState.ERROR);\n }\n\n /**\n * Function for use in an {@link module:ol/source/VectorTile~VectorTile}'s `tileLoadFunction`.\n * Sets the features for the tile.\n * @param {Array} features Features.\n * @api\n */\n setFeatures(features) {\n this.features_ = features;\n this.setState(TileState.LOADED);\n }\n\n /**\n * Set the feature loader for reading this tile's features.\n * @param {import(\"./featureloader.js\").FeatureLoader} loader Feature loader.\n * @api\n */\n setLoader(loader) {\n this.loader_ = loader;\n }\n}\n\nexport default VectorTile;\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\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|undefined} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @param {Array} [centerShift] Shift between map center and viewport center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, isMoving, centerShift) {\n if (!center) {\n return undefined;\n }\n if (!resolution && !onlyCenter) {\n return center;\n }\n const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n const shiftX = centerShift ? centerShift[0] : 0;\n const shiftY = centerShift ? centerShift[1] : 0;\n let minX = extent[0] + viewWidth / 2 + shiftX;\n let maxX = extent[2] - viewWidth / 2 + shiftX;\n let minY = extent[1] + viewHeight / 2 + shiftY;\n let maxY = extent[3] - viewHeight / 2 + shiftY;\n\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\n let x = clamp(center[0], minX, maxX);\n let y = clamp(center[1], minY, maxY);\n\n // during an interaction, allow some overscroll\n if (isMoving && smooth && resolution) {\n const ratio = 30 * resolution;\n x +=\n -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 +=\n -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\n return [x, y];\n }\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} [center] Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n","/**\n * @module ol/resolutionconstraint\n */\nimport {clamp} from './math.js';\nimport {getHeight, getWidth} from './extent.js';\nimport {linearFindNearest} from './array.js';\n\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\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(\n resolution,\n maxExtent,\n viewportSize,\n showFullExtent\n) {\n const xResolution = getWidth(maxExtent) / viewportSize[0];\n const yResolution = getHeight(maxExtent) / viewportSize[1];\n\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/**\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 let result = Math.min(resolution, maxResolution);\n const ratio = 50;\n\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(\n resolutions,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\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} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const maxResolution = resolutions[0];\n const minResolution = resolutions[resolutions.length - 1];\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const capped = Math.min(cappedMaxRes, resolution);\n const 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 return undefined;\n }\n );\n}\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [minResolution] Minimum resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(\n power,\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n minResolution = minResolution !== undefined ? minResolution : 0;\n\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} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const tolerance = 1e-9;\n const minZoomLevel = Math.ceil(\n Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance\n );\n const offset = -direction * (0.5 - tolerance) + 0.5;\n const capped = Math.min(cappedMaxRes, resolution);\n const cappedZoomLevel = Math.floor(\n Math.log(maxResolution / capped) / Math.log(power) + offset\n );\n const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n const newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n\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} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n if (!smooth || !isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n return undefined;\n }\n );\n}\n","/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\nimport {\n METERS_PER_UNIT,\n createProjection,\n disableCoordinateWarning,\n fromUserCoordinate,\n fromUserExtent,\n getUserProjection,\n toUserCoordinate,\n toUserExtent,\n} from './proj.js';\nimport {VOID} from './functions.js';\nimport {\n add as addCoordinate,\n equals as coordinatesEqual,\n equals,\n rotate as rotateCoordinate,\n} from './coordinate.js';\nimport {assert} from './asserts.js';\nimport {none as centerNone, createExtent} from './centerconstraint.js';\nimport {clamp, modulo} from './math.js';\nimport {\n createMinMaxResolution,\n createSnapToPower,\n createSnapToResolutions,\n} from './resolutionconstraint.js';\nimport {\n createSnapToN,\n createSnapToZero,\n disable,\n none as rotationNone,\n} from './rotationconstraint.js';\nimport {easeOut, inAndOut} from './easing.js';\nimport {\n getCenter,\n getForViewAndSize,\n getHeight,\n getWidth,\n isEmpty,\n} from './extent.js';\nimport {linearFindNearest} from './array.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter] Source center.\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter] Target center.\n * @property {number} [sourceResolution] Source resolution.\n * @property {number} [targetResolution] Target resolution.\n * @property {number} [sourceRotation] Source rotation.\n * @property {number} [targetRotation] Target rotation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Anchor.\n * @property {number} start Start.\n * @property {number} duration Duration.\n * @property {boolean} complete Complete.\n * @property {function(number):number} easing Easing.\n * @property {function(boolean):void} callback Callback.\n */\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center Center.\n * @property {import(\"./resolutionconstraint.js\").Type} resolution Resolution.\n * @property {import(\"./rotationconstraint.js\").Type} rotation Rotation.\n */\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [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):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n\n/**\n * @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 that determine the\n * zoom levels if specified. The index in the array corresponds to the zoom level,\n * therefore the resolution values have to be in descending order. It also constrains\n * the resolution by the minimum and maximum value. If set the `maxResolution`,\n * `minResolution`, `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 * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\n */\n\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to 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/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center Center (in view projection coordinates).\n * @property {import(\"./proj/Projection.js\").default} projection Projection.\n * @property {number} resolution Resolution.\n * @property {import(\"./coordinate.js\").Coordinate} [nextCenter] The next center during an animation series.\n * @property {number} [nextResolution] The next resolution during an animation series.\n * @property {number} [nextRotation] The next rotation during an animation series.\n * @property {number} rotation Rotation.\n * @property {number} zoom Zoom.\n */\n\n/**\n * Like {@link import(\"./Map.js\").FrameState}, but just `viewState` and `extent`.\n * @typedef {Object} ViewStateLayerStateExtent\n * @property {State} viewState View state.\n * @property {import(\"./extent.js\").Extent} extent Extent (in user projection coordinates).\n * @property {Array} [layerStatesArray] Layer states.\n */\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:center'|'change:resolution'|'change:rotation'} ViewObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ViewOnSignature\n */\n\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * 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 * Web 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 `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 */\nclass View extends BaseObject {\n /**\n * @param {ViewOptions} [options] View options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {ViewOnSignature}\n */\n this.on;\n\n /***\n * @type {ViewOnSignature}\n */\n this.once;\n\n /***\n * @type {ViewOnSignature}\n */\n this.un;\n\n options = Object.assign({}, options);\n\n /**\n * @private\n * @type {Array}\n */\n this.hints_ = [0, 0];\n\n /**\n * @private\n * @type {Array>}\n */\n this.animations_ = [];\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.updateAnimationKey_;\n\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection_ = createProjection(options.projection, 'EPSG:3857');\n\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n this.viewportSize_ = [100, 100];\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.targetCenter_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetResolution_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate}\n */\n this.nextCenter_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.nextResolution_;\n\n /**\n * @private\n * @type {number}\n */\n this.nextRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.cancelAnchor_ = undefined;\n\n if (options.projection) {\n disableCoordinateWarning();\n }\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\n this.applyOptions_(options);\n }\n\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n applyOptions_(options) {\n const properties = Object.assign({}, options);\n for (const key in ViewProperty) {\n delete properties[key];\n }\n this.setProperties(properties, true);\n\n const resolutionConstraintInfo = createResolutionConstraint(options);\n\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n\n /**\n * @type {Array|undefined}\n * @private\n */\n this.padding_ = options.padding;\n\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n\n const centerConstraint = createCenterConstraint(options);\n const resolutionConstraint = resolutionConstraintInfo.constraint;\n const rotationConstraint = createRotationConstraint(options);\n\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(\n options.center !== undefined ? options.center : null\n );\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n } else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n }\n\n /**\n * Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from that\n * content. The order of the values in the array is top, right, bottom, left.\n * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n * @type {Array|undefined}\n * @api\n */\n get padding() {\n return this.padding_;\n }\n set padding(padding) {\n let oldPadding = this.padding_;\n this.padding_ = padding;\n const center = this.getCenterInternal();\n if (center) {\n const newPadding = padding || [0, 0, 0, 0];\n oldPadding = oldPadding || [0, 0, 0, 0];\n const resolution = this.getResolution();\n const offsetX =\n (resolution / 2) *\n (newPadding[3] - oldPadding[3] + oldPadding[1] - newPadding[1]);\n const offsetY =\n (resolution / 2) *\n (newPadding[0] - oldPadding[0] + oldPadding[2] - newPadding[2]);\n this.setCenterInternal([center[0] + offsetX, center[1] - offsetY]);\n }\n }\n\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n getUpdatedOptions_(newOptions) {\n const options = this.getProperties();\n\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n } else {\n options.zoom = this.getZoom();\n }\n\n // preserve center\n options.center = this.getCenterInternal();\n\n // preserve rotation\n options.rotation = this.getRotation();\n\n return Object.assign({}, options, newOptions);\n }\n\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): 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 animate(var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n const args = new Array(arguments.length);\n for (let i = 0; i < args.length; ++i) {\n let options = arguments[i];\n if (options.center) {\n options = Object.assign({}, options);\n options.center = fromUserCoordinate(\n options.center,\n this.getProjection()\n );\n }\n if (options.anchor) {\n options = Object.assign({}, options);\n options.anchor = fromUserCoordinate(\n options.anchor,\n this.getProjection()\n );\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n }\n\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n animateInternal(var_args) {\n let animationCount = arguments.length;\n let callback;\n if (\n animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function'\n ) {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n\n let i = 0;\n for (; i < animationCount && !this.isDef(); ++i) {\n // if view properties are not yet set, shortcut to the final state\n const state = arguments[i];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n } else if (state.resolution) {\n this.setResolution(state.resolution);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n }\n if (i === animationCount) {\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n\n let start = Date.now();\n let center = this.targetCenter_.slice();\n let resolution = this.targetResolution_;\n let rotation = this.targetRotation_;\n const series = [];\n for (; i < animationCount; ++i) {\n const options = /** @type {AnimationOptions} */ (arguments[i]);\n\n const 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\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n } else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n const delta =\n modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n } else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n }\n\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n getAnimating() {\n return this.hints_[ViewHint.ANIMATING] > 0;\n }\n\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n getInteracting() {\n return this.hints_[ViewHint.INTERACTING] > 0;\n }\n\n /**\n * Cancel any ongoing animations.\n * @api\n */\n cancelAnimations() {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n let anchor;\n for (let i = 0, ii = this.animations_.length; i < ii; ++i) {\n const series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const 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 this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n }\n\n /**\n * Update all animations.\n */\n updateAnimations_() {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n const now = Date.now();\n let more = false;\n for (let i = this.animations_.length - 1; i >= 0; --i) {\n const series = this.animations_[i];\n let seriesComplete = true;\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (animation.complete) {\n continue;\n }\n const elapsed = now - animation.start;\n let fraction =\n animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n } else {\n seriesComplete = false;\n }\n const progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n const x0 = animation.sourceCenter[0];\n const y0 = animation.sourceCenter[1];\n const x1 = animation.targetCenter[0];\n const y1 = animation.targetCenter[1];\n this.nextCenter_ = animation.targetCenter;\n const x = x0 + progress * (x1 - x0);\n const y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n const resolution =\n progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n const size = this.getViewportSize_(this.getRotation());\n const constrainedResolution = this.constraints_.resolution(\n resolution,\n 0,\n size,\n true\n );\n this.targetCenter_ = this.calculateCenterZoom(\n constrainedResolution,\n animation.anchor\n );\n }\n this.nextResolution_ = animation.targetResolution;\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (\n animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined\n ) {\n const rotation =\n progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n const constrainedRotation = this.constraints_.rotation(\n rotation,\n true\n );\n this.targetCenter_ = this.calculateCenterRotate(\n constrainedRotation,\n animation.anchor\n );\n }\n this.nextRotation_ = animation.targetRotation;\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 this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n const callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(\n this.updateAnimations_.bind(this)\n );\n }\n }\n\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n calculateCenterRotate(rotation, anchor) {\n let center;\n const currentCenter = this.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 /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n calculateCenterZoom(resolution, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n const currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n const x =\n anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n const y =\n anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n }\n\n /**\n * Returns the current viewport size.\n * @private\n * @param {number} [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 getViewportSize_(rotation) {\n const size = this.viewportSize_;\n if (rotation) {\n const w = size[0];\n const h = size[1];\n return [\n Math.abs(w * Math.cos(rotation)) + Math.abs(h * Math.sin(rotation)),\n Math.abs(w * Math.sin(rotation)) + Math.abs(h * Math.cos(rotation)),\n ];\n }\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 * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size} [size] Viewport size; if undefined, [100, 100] is assumed\n */\n setViewportSize(size) {\n this.viewportSize_ = Array.isArray(size) ? size.slice() : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n }\n\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n getCenter() {\n const center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n }\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 getCenterInternal() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(ViewProperty.CENTER)\n );\n }\n\n /**\n * @return {Constraints} Constraints.\n */\n getConstraints() {\n return this.constraints_;\n }\n\n /**\n * @return {boolean} Resolution constraint is set\n */\n getConstrainResolution() {\n return this.get('constrainResolution');\n }\n\n /**\n * @param {Array} [hints] Destination array.\n * @return {Array} Hint.\n */\n getHints(hints) {\n if (hints !== undefined) {\n hints[0] = this.hints_[0];\n hints[1] = this.hints_[1];\n return hints;\n }\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} [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 calculateExtent(size) {\n const extent = this.calculateExtentInternal(size);\n return toUserExtent(extent, this.getProjection());\n }\n\n /**\n * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided,\n * the map's last known viewport size will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n calculateExtentInternal(size) {\n size = size || this.getViewportSizeMinusPadding_();\n const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n assert(center, 1); // The view center is not defined\n const resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n const rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n\n return getForViewAndSize(center, resolution, rotation, size);\n }\n\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n getMaxResolution() {\n return this.maxResolution_;\n }\n\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n getMinResolution() {\n return this.minResolution_;\n }\n\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.minResolution_)\n );\n }\n\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n setMaxZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));\n }\n\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.maxResolution_)\n );\n }\n\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n setMinZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));\n }\n\n /**\n * Set whether the view should allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n setConstrainResolution(enabled) {\n this.applyOptions_(this.getUpdatedOptions_({constrainResolution: enabled}));\n }\n\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n getProjection() {\n return this.projection_;\n }\n\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n getResolution() {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n }\n\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n getResolutions() {\n return this.resolutions_;\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n getResolutionForExtent(extent, size) {\n return this.getResolutionForExtentInternal(\n fromUserExtent(extent, this.getProjection()),\n size\n );\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n getResolutionForExtentInternal(extent, size) {\n size = size || this.getViewportSizeMinusPadding_();\n const xResolution = getWidth(extent) / size[0];\n const yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n }\n\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Resolution for value function.\n */\n getResolutionForValueFunction(power) {\n power = power || 2;\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n const resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n }\n );\n }\n\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n getRotation() {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n }\n\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Value for resolution function.\n */\n getValueForResolutionFunction(power) {\n const logPower = Math.log(power || 2);\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n const value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n }\n );\n }\n\n /**\n * Returns the size of the viewport minus padding.\n * @private\n * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n */\n getViewportSizeMinusPadding_(rotation) {\n let size = this.getViewportSize_(rotation);\n const padding = this.padding_;\n if (padding) {\n size = [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ];\n }\n return size;\n }\n\n /**\n * @return {State} View state.\n */\n getState() {\n const projection = this.getProjection();\n const resolution = this.getResolution();\n const rotation = this.getRotation();\n let center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n const padding = this.padding_;\n if (padding) {\n const reducedSize = this.getViewportSizeMinusPadding_();\n center = calculateCenterOn(\n center,\n this.getViewportSize_(),\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n }\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n nextCenter: this.nextCenter_,\n nextResolution: this.nextResolution_,\n nextRotation: this.nextRotation_,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n }\n\n /**\n * @return {ViewStateLayerStateExtent} Like `FrameState`, but just `viewState` and `extent`.\n */\n getViewStateAndExtent() {\n return {\n viewState: this.getState(),\n extent: this.calculateExtent(),\n };\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 getZoom() {\n let zoom;\n const resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n }\n\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n getZoomForResolution(resolution) {\n let offset = this.minZoom_ || 0;\n let max, zoomFactor;\n if (this.resolutions_) {\n const nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n } else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n } else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n }\n\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n getResolutionForZoom(zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n const baseLevel = clamp(\n Math.floor(zoom),\n 0,\n this.resolutions_.length - 2\n );\n const zoomFactor =\n this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (\n this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1))\n );\n }\n return (\n this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_)\n );\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} [options] Options.\n * @api\n */\n fit(geometryOrExtent, options) {\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n let geometry;\n assert(\n Array.isArray(geometryOrExtent) ||\n typeof (/** @type {?} */ (geometryOrExtent).getSimplifiedGeometry) ===\n 'function',\n 24\n ); // 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 const extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n } else if (geometryOrExtent.getType() === 'Circle') {\n const extent = fromUserExtent(\n geometryOrExtent.getExtent(),\n this.getProjection()\n );\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n } else {\n const userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection())\n );\n } else {\n geometry = geometryOrExtent;\n }\n }\n\n this.fitInternal(geometry, options);\n }\n\n /**\n * Calculate rotated extent\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @return {import(\"./extent\").Extent} The rotated extent for the geometry.\n */\n rotatedExtentForGeometry(geometry) {\n const rotation = this.getRotation();\n const cosAngle = Math.cos(rotation);\n const sinAngle = Math.sin(-rotation);\n const coords = geometry.getFlatCoordinates();\n const stride = geometry.getStride();\n let minRotX = +Infinity;\n let minRotY = +Infinity;\n let maxRotX = -Infinity;\n let maxRotY = -Infinity;\n for (let i = 0, ii = coords.length; i < ii; i += stride) {\n const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n return [minRotX, minRotY, maxRotX, maxRotY];\n }\n\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions} [options] Options.\n */\n fitInternal(geometry, options) {\n options = options || {};\n let size = options.size;\n if (!size) {\n size = this.getViewportSizeMinusPadding_();\n }\n const padding =\n options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n const nearest = options.nearest !== undefined ? options.nearest : false;\n let minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n } else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n } else {\n minResolution = 0;\n }\n\n const rotatedExtent = this.rotatedExtentForGeometry(geometry);\n\n // calculate resolution\n let resolution = this.getResolutionForExtentInternal(rotatedExtent, [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n\n // calculate center\n const rotation = this.getRotation();\n const sinAngle = Math.sin(rotation);\n const cosAngle = Math.cos(rotation);\n const centerRot = getCenter(rotatedExtent);\n centerRot[0] += ((padding[1] - padding[3]) / 2) * resolution;\n centerRot[1] += ((padding[0] - padding[2]) / 2) * resolution;\n const centerX = centerRot[0] * cosAngle - centerRot[1] * sinAngle;\n const centerY = centerRot[1] * cosAngle + centerRot[0] * sinAngle;\n const center = this.getConstrainedCenter([centerX, centerY], resolution);\n const callback = options.callback ? options.callback : VOID;\n\n if (options.duration !== undefined) {\n this.animateInternal(\n {\n resolution: resolution,\n center: center,\n duration: options.duration,\n easing: options.easing,\n },\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 /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n centerOn(coordinate, size, position) {\n this.centerOnInternal(\n fromUserCoordinate(coordinate, this.getProjection()),\n size,\n position\n );\n }\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 centerOnInternal(coordinate, size, position) {\n this.setCenterInternal(\n calculateCenterOn(\n coordinate,\n size,\n position,\n this.getResolution(),\n this.getRotation()\n )\n );\n }\n\n /**\n * Calculates the shift between map and viewport center.\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array|undefined} Center shift.\n */\n calculateCenterShift(center, resolution, rotation, size) {\n let centerShift;\n const padding = this.padding_;\n if (padding && center) {\n const reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n const shiftedCenter = calculateCenterOn(\n center,\n size,\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n centerShift = [\n center[0] - shiftedCenter[0],\n center[1] - shiftedCenter[1],\n ];\n }\n return centerShift;\n }\n\n /**\n * @return {boolean} Is defined.\n */\n isDef() {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n }\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 adjustCenter(deltaCoordinates) {\n const center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\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 adjustCenterInternal(deltaCoordinates) {\n const center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\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} [anchor] The origin of the transformation.\n * @api\n */\n adjustResolution(ratio, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n }\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} [anchor] The origin of the transformation.\n */\n adjustResolutionInternal(ratio, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const size = this.getViewportSize_(this.getRotation());\n const newResolution = this.constraints_.resolution(\n this.targetResolution_ * ratio,\n 0,\n size,\n isMoving\n );\n\n if (anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, anchor);\n }\n\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n }\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} [anchor] The origin of the transformation.\n * @api\n */\n adjustZoom(delta, anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), anchor);\n }\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} [anchor] The rotation center.\n * @api\n */\n adjustRotation(delta, anchor) {\n if (anchor) {\n anchor = fromUserCoordinate(anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, anchor);\n }\n\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n */\n adjustRotationInternal(delta, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const newRotation = this.constraints_.rotation(\n this.targetRotation_ + delta,\n isMoving\n );\n if (anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n }\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 setCenter(center) {\n this.setCenterInternal(\n center ? fromUserCoordinate(center, this.getProjection()) : center\n );\n }\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 setCenterInternal(center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n }\n\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n setHint(hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n }\n\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n setResolution(resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n }\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 setRotation(rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n }\n\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n setZoom(zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n }\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} [doNotCancelAnims] Do not cancel animations.\n * @param {boolean} [forceMoving] Apply constraints as if the view is moving.\n * @private\n */\n applyTargetState_(doNotCancelAnims, forceMoving) {\n const isMoving =\n this.getAnimating() || this.getInteracting() || forceMoving;\n\n // compute rotation\n const newRotation = this.constraints_.rotation(\n this.targetRotation_,\n isMoving\n );\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n 0,\n size,\n isMoving\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n isMoving,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\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 this.set('zoom', this.getZoom(), true);\n }\n if (\n !newCenter ||\n !this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)\n ) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n\n if (this.getAnimating() && !doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n }\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} [duration] The animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n resolveConstraints(duration, resolutionDirection, anchor) {\n duration = duration !== undefined ? duration : 200;\n const direction = resolutionDirection || 0;\n\n const newRotation = this.constraints_.rotation(this.targetRotation_);\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n direction,\n size\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n false,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\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\n anchor = anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n\n if (\n this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)\n ) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\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 /**\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 beginInteraction() {\n this.resolveConstraints(0);\n\n this.setHint(ViewHint.INTERACTING, 1);\n }\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} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n endInteraction(duration, resolutionDirection, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.endInteractionInternal(duration, resolutionDirection, anchor);\n }\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} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n endInteractionInternal(duration, resolutionDirection, anchor) {\n if (!this.getInteracting()) {\n return;\n }\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(duration, resolutionDirection, anchor);\n }\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} [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 getConstrainedCenter(targetCenter, targetResolution) {\n const size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(\n targetCenter,\n targetResolution || this.getResolution(),\n size\n );\n }\n\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number} [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 getConstrainedZoom(targetZoom, direction) {\n const targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(\n this.getConstrainedResolution(targetRes, direction)\n );\n }\n\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number} [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 getConstrainedResolution(targetResolution, direction) {\n direction = direction || 0;\n const size = this.getViewportSize_(this.getRotation());\n\n return this.constraints_.resolution(targetResolution, direction, size);\n }\n}\n\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n const smooth =\n options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n const extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n\n return centerNone;\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n let resolutionConstraint;\n let maxResolution;\n let minResolution;\n\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n const defaultMaxZoom = 28;\n const defaultZoomFactor = 2;\n\n let minZoom =\n options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n\n let maxZoom =\n options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n\n const zoomFactor =\n options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n\n const multiWorld =\n options.multiWorld !== undefined ? options.multiWorld : false;\n\n const smooth =\n options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n\n const showFullExtent =\n options.showFullExtent !== undefined ? options.showFullExtent : false;\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n const projExtent = projection.getExtent();\n let constrainOnlyCenter = options.constrainOnlyCenter;\n let extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n\n if (options.resolutions !== undefined) {\n const resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(\n resolutions,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n } else {\n // calculate the default min and max resolution\n const size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT.degrees) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n\n const defaultMaxResolution =\n size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n const defaultMinResolution =\n defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n } else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n } else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n } else {\n minResolution = defaultMinResolution;\n }\n }\n\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(\n Math.log(maxResolution / minResolution) / Math.log(zoomFactor)\n );\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(\n zoomFactor,\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n const enableRotation =\n options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n const constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n if (constrainRotation === false) {\n return rotationNone;\n }\n if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n return rotationNone;\n }\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}\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 * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n // calculate rotated position\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n const centerX = rotX * cosAngle - rotY * sinAngle;\n const centerY = rotY * cosAngle + rotX * sinAngle;\n\n return [centerX, centerY];\n}\n\nexport default View;\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n","/**\n * @module ol/array\n */\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, comparator) {\n let mid, cmp;\n comparator = comparator || ascending;\n let low = 0;\n let high = haystack.length;\n let found = false;\n\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n } else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n\n /* Key not found. */\n return found ? low : ~low;\n}\n\n/**\n * Compare function sorting arrays in ascending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function ascending(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n\n/**\n * @param {Array} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n * 0 means return the nearest,\n * > 0 means return the largest nearest,\n * < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n if (arr[0] <= target) {\n return 0;\n }\n\n const n = arr.length;\n if (target <= arr[n - 1]) {\n return n - 1;\n }\n\n if (typeof direction === 'function') {\n for (let i = 1; i < n; ++i) {\n const candidate = arr[i];\n if (candidate === target) {\n return i;\n }\n if (candidate < target) {\n if (direction(target, arr[i - 1], candidate) > 0) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n }\n\n if (direction > 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n return n - 1;\n }\n\n if (direction < 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n return n - 1;\n }\n\n for (let i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n}\n\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n const tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n const extension = Array.isArray(data) ? data : [data];\n const length = extension.length;\n for (let i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n const i = arr.indexOf(obj);\n const found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n const len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (let i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Sort the passed array such that the relative order of equal elements is preserved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n const length = arr.length;\n const tmp = Array(arr.length);\n let i;\n for (i = 0; i < length; i++) {\n tmp[i] = {index: i, value: arr[i]};\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [func] Comparison function.\n * @param {boolean} [strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, func, strict) {\n const compare = func || ascending;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n const res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (strict && res === 0));\n });\n}\n","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n","/**\n * @module ol/color\n */\nimport {assert} from './asserts.js';\nimport {clamp} from './math.js';\n\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nconst HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nconst NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n return toString(color);\n}\n\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n const el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n const rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n return '';\n}\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport const fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n\n /**\n * @const\n * @type {number}\n */\n const MAX_CACHE_SIZE = 1024;\n\n /**\n * @type {Object}\n */\n const cache = {};\n\n /**\n * @type {number}\n */\n let cacheSize = 0;\n\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n let color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n } else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n let i = 0;\n for (const key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n }\n );\n})();\n\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n return fromString(color);\n}\n\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n let r, g, b, a, color;\n\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n const n = s.length - 1; // number of hex digits\n let d; // number of digits per channel\n if (n <= 4) {\n d = 1;\n } else {\n d = 2;\n }\n const hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n } else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n } else if (s.startsWith('rgba(')) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n } else if (s.startsWith('rgb(')) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n } else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n let r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n let g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n let b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n const a = color[3] === undefined ? 1 : Math.round(color[3] * 100) / 100;\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return HEX_COLOR_RE_.test(s) || s.startsWith('rgba(') || s.startsWith('rgb(');\n}\n","/**\n * @module ol/colorlike\n */\nimport {toString} from './color.js';\n\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n }\n return color;\n}\n","/**\n * @module ol/console\n */\n\n/**\n * @typedef {'info'|'warn'|'error'|'none'} Level\n */\n\n/**\n * @type {Object}\n */\nconst levels = {\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\n\n/**\n * @type {number}\n */\nlet level = levels.info;\n\n/**\n * Set the logging level. By default, the level is set to 'info' and all\n * messages will be logged. Set to 'warn' to only display warnings and errors.\n * Set to 'error' to only display errors. Set to 'none' to silence all messages.\n *\n * @param {Level} l The new level.\n */\nexport function setLevel(l) {\n level = levels[l];\n}\n\nexport function log(...args) {\n if (level > levels.info) {\n return;\n }\n console.log(...args); // eslint-disable-line no-console\n}\n\nexport function warn(...args) {\n if (level > levels.warn) {\n return;\n }\n console.warn(...args); // eslint-disable-line no-console\n}\n\nexport function error(...args) {\n if (level > levels.error) {\n return;\n }\n console.error(...args); // eslint-disable-line no-console\n}\n","/**\n * @module ol/control/FullScreen\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport MapProperty from '../MapProperty.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_UNSUPPORTED} from '../css.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {replaceNode} from '../dom.js';\n\nconst events = [\n 'fullscreenchange',\n 'webkitfullscreenchange',\n 'MSFullscreenChange',\n];\n\n/**\n * @enum {string}\n */\nconst FullScreenEventType = {\n /**\n * Triggered after the map entered fullscreen.\n * @event FullScreenEventType#enterfullscreen\n * @api\n */\n ENTERFULLSCREEN: 'enterfullscreen',\n\n /**\n * Triggered after the map leave fullscreen.\n * @event FullScreenEventType#leavefullscreen\n * @api\n */\n LEAVEFULLSCREEN: 'leavefullscreen',\n};\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} FullScreenOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-full-screen'] CSS class name.\n * @property {string|Text|HTMLElement} [label='\\u2922'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|Text|HTMLElement} [labelActive='\\u00d7'] Text label to use for the\n * button when full-screen is active.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [activeClassName=className + '-true'] CSS class name for the button\n * when full-screen is active.\n * @property {string} [inactiveClassName=className + '-false'] CSS class name for the button\n * when full-screen is inactive.\n * @property {string} [tipLabel='Toggle full-screen'] Text label to use for the button tip.\n * @property {boolean} [keys=false] Full keyboard access.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {HTMLElement|string} [source] The element to be displayed\n * fullscreen. When not provided, the element containing the map viewport will\n * be displayed fullscreen.\n */\n\n/**\n * @classdesc\n * Provides a button that when clicked fills up the full screen with the map.\n * The full screen source element is by default the element containing the map viewport unless\n * overridden by providing the `source` option. In which case, the dom\n * element introduced using this parameter will be displayed in full screen.\n *\n * When in full screen mode, a close button is shown to exit full screen mode.\n * The [Fullscreen API](https://www.w3.org/TR/fullscreen/) is used to\n * toggle the map in full screen mode.\n *\n * @fires FullScreenEventType#enterfullscreen\n * @fires FullScreenEventType#leavefullscreen\n * @api\n */\nclass FullScreen extends Control {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target,\n });\n\n /***\n * @type {FullScreenOnSignature}\n */\n this.on;\n\n /***\n * @type {FullScreenOnSignature}\n */\n this.once;\n\n /***\n * @type {FullScreenOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {boolean}\n */\n this.keys_ = options.keys !== undefined ? options.keys : false;\n\n /**\n * @private\n * @type {HTMLElement|string|undefined}\n */\n this.source_ = options.source;\n\n /**\n * @type {boolean}\n * @private\n */\n this.isInFullscreen_ = false;\n\n /**\n * @private\n */\n this.boundHandleMapTargetChange_ = this.handleMapTargetChange_.bind(this);\n\n /**\n * @private\n * @type {string}\n */\n this.cssClassName_ =\n options.className !== undefined ? options.className : 'ol-full-screen';\n\n /**\n * @private\n * @type {Array}\n */\n this.documentListeners_ = [];\n\n /**\n * @private\n * @type {Array}\n */\n this.activeClassName_ =\n options.activeClassName !== undefined\n ? options.activeClassName.split(' ')\n : [this.cssClassName_ + '-true'];\n\n /**\n * @private\n * @type {Array}\n */\n this.inactiveClassName_ =\n options.inactiveClassName !== undefined\n ? options.inactiveClassName.split(' ')\n : [this.cssClassName_ + '-false'];\n\n const label = options.label !== undefined ? options.label : '\\u2922';\n\n /**\n * @private\n * @type {Text|HTMLElement}\n */\n this.labelNode_ =\n typeof label === 'string' ? document.createTextNode(label) : label;\n\n const labelActive =\n options.labelActive !== undefined ? options.labelActive : '\\u00d7';\n\n /**\n * @private\n * @type {Text|HTMLElement}\n */\n this.labelActiveNode_ =\n typeof labelActive === 'string'\n ? document.createTextNode(labelActive)\n : labelActive;\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.button_ = document.createElement('button');\n this.button_.title = tipLabel;\n this.button_.setAttribute('type', 'button');\n this.button_.appendChild(this.labelNode_);\n this.button_.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n this.setClassName_(this.button_, this.isInFullscreen_);\n\n this.element.className = `${this.cssClassName_} ${CLASS_UNSELECTABLE} ${CLASS_CONTROL}`;\n this.element.appendChild(this.button_);\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleFullScreen_();\n }\n\n /**\n * @private\n */\n handleFullScreen_() {\n const map = this.getMap();\n if (!map) {\n return;\n }\n const doc = map.getOwnerDocument();\n if (!isFullScreenSupported(doc)) {\n return;\n }\n if (isFullScreen(doc)) {\n exitFullScreen(doc);\n } else {\n let element;\n if (this.source_) {\n element =\n typeof this.source_ === 'string'\n ? doc.getElementById(this.source_)\n : this.source_;\n } else {\n element = map.getTargetElement();\n }\n if (this.keys_) {\n requestFullScreenWithKeys(element);\n } else {\n requestFullScreen(element);\n }\n }\n }\n\n /**\n * @private\n */\n handleFullScreenChange_() {\n const map = this.getMap();\n if (!map) {\n return;\n }\n const wasInFullscreen = this.isInFullscreen_;\n this.isInFullscreen_ = isFullScreen(map.getOwnerDocument());\n if (wasInFullscreen !== this.isInFullscreen_) {\n this.setClassName_(this.button_, this.isInFullscreen_);\n if (this.isInFullscreen_) {\n replaceNode(this.labelActiveNode_, this.labelNode_);\n this.dispatchEvent(FullScreenEventType.ENTERFULLSCREEN);\n } else {\n replaceNode(this.labelNode_, this.labelActiveNode_);\n this.dispatchEvent(FullScreenEventType.LEAVEFULLSCREEN);\n }\n map.updateSize();\n }\n }\n\n /**\n * @param {HTMLElement} element Target element\n * @param {boolean} fullscreen True if fullscreen class name should be active\n * @private\n */\n setClassName_(element, fullscreen) {\n if (fullscreen) {\n element.classList.remove(...this.inactiveClassName_);\n element.classList.add(...this.activeClassName_);\n } else {\n element.classList.remove(...this.activeClassName_);\n element.classList.add(...this.inactiveClassName_);\n }\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n const oldMap = this.getMap();\n if (oldMap) {\n oldMap.removeChangeListener(\n MapProperty.TARGET,\n this.boundHandleMapTargetChange_\n );\n }\n\n super.setMap(map);\n\n this.handleMapTargetChange_();\n if (map) {\n map.addChangeListener(\n MapProperty.TARGET,\n this.boundHandleMapTargetChange_\n );\n }\n }\n\n /**\n * @private\n */\n handleMapTargetChange_() {\n const listeners = this.documentListeners_;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n unlistenByKey(listeners[i]);\n }\n listeners.length = 0;\n\n const map = this.getMap();\n if (map) {\n const doc = map.getOwnerDocument();\n if (isFullScreenSupported(doc)) {\n this.element.classList.remove(CLASS_UNSUPPORTED);\n } else {\n this.element.classList.add(CLASS_UNSUPPORTED);\n }\n\n for (let i = 0, ii = events.length; i < ii; ++i) {\n listeners.push(\n listen(doc, events[i], this.handleFullScreenChange_, this)\n );\n }\n this.handleFullScreenChange_();\n }\n }\n}\n\n/**\n * @param {Document} doc The root document to check.\n * @return {boolean} Fullscreen is supported by the current platform.\n */\nfunction isFullScreenSupported(doc) {\n const body = doc.body;\n return !!(\n body['webkitRequestFullscreen'] ||\n (body.requestFullscreen && doc.fullscreenEnabled)\n );\n}\n\n/**\n * @param {Document} doc The root document to check.\n * @return {boolean} Element is currently in fullscreen.\n */\nfunction isFullScreen(doc) {\n return !!(doc['webkitIsFullScreen'] || doc.fullscreenElement);\n}\n\n/**\n * Request to fullscreen an element.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreen(element) {\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n }\n}\n\n/**\n * Request to fullscreen an element with keyboard input.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreenWithKeys(element) {\n if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n } else {\n requestFullScreen(element);\n }\n}\n\n/**\n * Exit fullscreen.\n * @param {Document} doc The document to exit fullscren from\n */\nfunction exitFullScreen(doc) {\n if (doc.exitFullscreen) {\n doc.exitFullscreen();\n } else if (doc['webkitExitFullscreen']) {\n doc['webkitExitFullscreen']();\n }\n}\n\nexport default FullScreen;\n","/**\n * @module ol/control/MousePosition\n */\n\nimport Control from './Control.js';\nimport EventType from '../pointer/EventType.js';\nimport {\n get as getProjection,\n getTransformFromProjections,\n getUserProjection,\n identityTransform,\n} from '../proj.js';\nimport {listen} from '../events.js';\nimport {wrapX} from '../coordinate.js';\n\n/**\n * @type {string}\n */\nconst PROJECTION = 'projection';\n\n/**\n * @type {string}\n */\nconst COORDINATE_FORMAT = 'coordinateFormat';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} MousePositionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-mouse-position'] CSS class name.\n * @property {import(\"../coordinate.js\").CoordinateFormat} [coordinateFormat] Coordinate format.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the\n * control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {string} [placeholder] Markup to show when the mouse position is not\n * available (e.g. when the pointer leaves the map viewport). By default, a non-breaking space is rendered\n * initially and the last position is retained when the mouse leaves the viewport.\n * When a string is provided (e.g. `'no position'` or `''` for an empty string) it is used as a\n * placeholder.\n * @property {boolean} [wrapX=true] Wrap the world horizontally on the projection's antimeridian, if it\n * is a global projection.\n */\n\n/**\n * @classdesc\n * A control to show the 2D coordinates of the mouse cursor. By default, these\n * are in the view projection, but can be in any supported projection.\n * By default the control is shown in the top right corner of the map, but this\n * can be changed by using the css selector `.ol-mouse-position`.\n *\n * On touch devices, which usually do not have a mouse cursor, the coordinates\n * of the currently touched position are shown.\n *\n * @api\n */\nclass MousePosition extends Control {\n /**\n * @param {Options} [options] Mouse position options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const element = document.createElement('div');\n element.className =\n options.className !== undefined ? options.className : 'ol-mouse-position';\n\n super({\n element: element,\n render: options.render,\n target: options.target,\n });\n\n /***\n * @type {MousePositionOnSignature}\n */\n this.on;\n\n /***\n * @type {MousePositionOnSignature}\n */\n this.once;\n\n /***\n * @type {MousePositionOnSignature}\n */\n this.un;\n\n this.addChangeListener(PROJECTION, this.handleProjectionChanged_);\n\n if (options.coordinateFormat) {\n this.setCoordinateFormat(options.coordinateFormat);\n }\n if (options.projection) {\n this.setProjection(options.projection);\n }\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderOnMouseOut_ = options.placeholder !== undefined;\n\n /**\n * @private\n * @type {string}\n */\n this.placeholder_ = this.renderOnMouseOut_ ? options.placeholder : ' ';\n\n /**\n * @private\n * @type {string}\n */\n this.renderedHTML_ = element.innerHTML;\n\n /**\n * @private\n * @type {?import(\"../proj/Projection.js\").default}\n */\n this.mapProjection_ = null;\n\n /**\n * @private\n * @type {?import(\"../proj.js\").TransformFunction}\n */\n this.transform_ = null;\n\n /**\n * @private\n * @type {boolean}\n */\n this.wrapX_ = options.wrapX === false ? false : true;\n }\n\n /**\n * @private\n */\n handleProjectionChanged_() {\n this.transform_ = null;\n }\n\n /**\n * Return the coordinate format type used to render the current position or\n * undefined.\n * @return {import(\"../coordinate.js\").CoordinateFormat|undefined} The format to render the current\n * position in.\n * @observable\n * @api\n */\n getCoordinateFormat() {\n return /** @type {import(\"../coordinate.js\").CoordinateFormat|undefined} */ (\n this.get(COORDINATE_FORMAT)\n );\n }\n\n /**\n * Return the projection that is used to report the mouse position.\n * @return {import(\"../proj/Projection.js\").default|undefined} The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n getProjection() {\n return /** @type {import(\"../proj/Projection.js\").default|undefined} */ (\n this.get(PROJECTION)\n );\n }\n\n /**\n * @param {MouseEvent} event Browser event.\n * @protected\n */\n handleMouseMove(event) {\n const map = this.getMap();\n this.updateHTML_(map.getEventPixel(event));\n }\n\n /**\n * @param {Event} event Browser event.\n * @protected\n */\n handleMouseOut(event) {\n this.updateHTML_(null);\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n const viewport = map.getViewport();\n this.listenerKeys.push(\n listen(viewport, EventType.POINTERMOVE, this.handleMouseMove, this)\n );\n if (this.renderOnMouseOut_) {\n this.listenerKeys.push(\n listen(viewport, EventType.POINTEROUT, this.handleMouseOut, this)\n );\n }\n this.updateHTML_(null);\n }\n }\n\n /**\n * Set the coordinate format type used to render the current position.\n * @param {import(\"../coordinate.js\").CoordinateFormat} format The format to render the current\n * position in.\n * @observable\n * @api\n */\n setCoordinateFormat(format) {\n this.set(COORDINATE_FORMAT, format);\n }\n\n /**\n * Set the projection that is used to report the mouse position.\n * @param {import(\"../proj.js\").ProjectionLike} projection The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n setProjection(projection) {\n this.set(PROJECTION, getProjection(projection));\n }\n\n /**\n * @param {?import(\"../pixel.js\").Pixel} pixel Pixel.\n * @private\n */\n updateHTML_(pixel) {\n let html = this.placeholder_;\n if (pixel && this.mapProjection_) {\n if (!this.transform_) {\n const projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(\n this.mapProjection_,\n projection\n );\n } else {\n this.transform_ = identityTransform;\n }\n }\n const map = this.getMap();\n const coordinate = map.getCoordinateFromPixelInternal(pixel);\n if (coordinate) {\n const userProjection = getUserProjection();\n if (userProjection) {\n this.transform_ = getTransformFromProjections(\n this.mapProjection_,\n userProjection\n );\n }\n this.transform_(coordinate, coordinate);\n if (this.wrapX_) {\n const projection =\n userProjection || this.getProjection() || this.mapProjection_;\n wrapX(coordinate, projection);\n }\n const coordinateFormat = this.getCoordinateFormat();\n if (coordinateFormat) {\n html = coordinateFormat(coordinate);\n } else {\n html = coordinate.toString();\n }\n }\n }\n if (!this.renderedHTML_ || html !== this.renderedHTML_) {\n this.element.innerHTML = html;\n this.renderedHTML_ = html;\n }\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 * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n this.mapProjection_ = null;\n } else {\n if (this.mapProjection_ != frameState.viewState.projection) {\n this.mapProjection_ = frameState.viewState.projection;\n this.transform_ = null;\n }\n }\n }\n}\n\nexport default MousePosition;\n","/**\n * @module ol/control/OverviewMap\n */\nimport Collection from '../Collection.js';\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport Map from '../Map.js';\nimport MapEventType from '../MapEventType.js';\nimport MapProperty from '../MapProperty.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport Overlay from '../Overlay.js';\nimport View from '../View.js';\nimport ViewProperty from '../ViewProperty.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {\n containsExtent,\n equals as equalsExtent,\n getBottomRight,\n getTopLeft,\n scaleFromCenter,\n} from '../extent.js';\nimport {listen, listenOnce} from '../events.js';\nimport {fromExtent as polygonFromExtent} from '../geom/Polygon.js';\nimport {replaceNode} from '../dom.js';\n\n/**\n * Maximum width and/or height extent ratio that determines when the overview\n * map should be zoomed out.\n * @type {number}\n */\nconst MAX_RATIO = 0.75;\n\n/**\n * Minimum width and/or height extent ratio that determines when the overview\n * map should be zoomed in.\n * @type {number}\n */\nconst MIN_RATIO = 0.1;\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-overviewmap'] CSS class name.\n * @property {boolean} [collapsed=true] Whether the control should start collapsed or not (expanded).\n * @property {string|HTMLElement} [collapseLabel='‹'] Text label to use for the\n * expanded overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {boolean} [collapsible=true] Whether the control can be collapsed or not.\n * @property {string|HTMLElement} [label='›'] Text label to use for the collapsed\n * overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {Array|import(\"../Collection.js\").default} [layers]\n * Layers for the overview map.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {boolean} [rotateWithView=false] Whether the control view should rotate with the main map view.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string} [tipLabel='Overview map'] Text label to use for the button tip.\n * @property {View} [view] Custom view for the overview map (should use same projection as main map). If not provided,\n * a default view with the same projection as the main map will be used.\n */\n\n/**\n * Create a new control with a map acting as an overview map for another\n * defined map.\n *\n * @api\n */\nclass OverviewMap extends Control {\n /**\n * @param {Options} [options] OverviewMap options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n /**\n * @private\n */\n this.boundHandleRotationChanged_ = this.handleRotationChanged_.bind(this);\n\n /**\n * @type {boolean}\n * @private\n */\n this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n /**\n * @private\n * @type {boolean}\n */\n this.rotateWithView_ =\n options.rotateWithView !== undefined ? options.rotateWithView : false;\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent|undefined}\n */\n this.viewExtent_ = undefined;\n\n const className =\n options.className !== undefined ? options.className : 'ol-overviewmap';\n\n const tipLabel =\n options.tipLabel !== undefined ? options.tipLabel : 'Overview map';\n\n const collapseLabel =\n options.collapseLabel !== undefined ? options.collapseLabel : '\\u2039';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : '\\u203A';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n }\n\n const activeLabel =\n this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n\n button.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.ovmapDiv_ = document.createElement('div');\n this.ovmapDiv_.className = 'ol-overviewmap-map';\n\n /**\n * Explicitly given view to be used instead of a view derived from the main map.\n * @type {View}\n * @private\n */\n this.view_ = options.view;\n\n const ovmap = new Map({\n view: options.view,\n controls: new Collection(),\n interactions: new Collection(),\n });\n\n /**\n * @type {Map}\n * @private\n */\n this.ovmap_ = ovmap;\n\n if (options.layers) {\n options.layers.forEach(function (layer) {\n ovmap.addLayer(layer);\n });\n }\n\n const box = document.createElement('div');\n box.className = 'ol-overviewmap-box';\n box.style.boxSizing = 'border-box';\n\n /**\n * @type {import(\"../Overlay.js\").default}\n * @private\n */\n this.boxOverlay_ = new Overlay({\n position: [0, 0],\n positioning: 'center-center',\n element: box,\n });\n this.ovmap_.addOverlay(this.boxOverlay_);\n\n const cssClasses =\n className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.ovmapDiv_);\n element.appendChild(button);\n\n /* Interactive map */\n\n const scope = this;\n\n const overlay = this.boxOverlay_;\n const overlayBox = this.boxOverlay_.getElement();\n\n /* Functions definition */\n\n const computeDesiredMousePosition = function (mousePosition) {\n return {\n clientX: mousePosition.clientX,\n clientY: mousePosition.clientY,\n };\n };\n\n const move = function (event) {\n const position = /** @type {?} */ (computeDesiredMousePosition(event));\n const coordinates = ovmap.getEventCoordinateInternal(\n /** @type {MouseEvent} */ (position)\n );\n\n overlay.setPosition(coordinates);\n };\n\n const endMoving = function (event) {\n const coordinates = ovmap.getEventCoordinateInternal(event);\n\n scope.getMap().getView().setCenterInternal(coordinates);\n\n window.removeEventListener('mousemove', move);\n window.removeEventListener('mouseup', endMoving);\n };\n\n /* Binding */\n\n overlayBox.addEventListener('mousedown', function () {\n window.addEventListener('mousemove', move);\n window.addEventListener('mouseup', endMoving);\n });\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n const oldMap = this.getMap();\n if (map === oldMap) {\n return;\n }\n if (oldMap) {\n const oldView = oldMap.getView();\n if (oldView) {\n this.unbindView_(oldView);\n }\n this.ovmap_.setTarget(null);\n }\n super.setMap(map);\n\n if (map) {\n this.ovmap_.setTarget(this.ovmapDiv_);\n this.listenerKeys.push(\n listen(\n map,\n ObjectEventType.PROPERTYCHANGE,\n this.handleMapPropertyChange_,\n this\n )\n );\n\n const view = map.getView();\n if (view) {\n this.bindView_(view);\n if (view.isDef()) {\n this.ovmap_.updateSize();\n this.resetExtent_();\n }\n }\n\n if (!this.ovmap_.isRendered()) {\n this.updateBoxAfterOvmapIsRendered_();\n }\n }\n }\n\n /**\n * Handle map property changes. This only deals with changes to the map's view.\n * @param {import(\"../Object.js\").ObjectEvent} event The propertychange event.\n * @private\n */\n handleMapPropertyChange_(event) {\n if (event.key === MapProperty.VIEW) {\n const oldView = /** @type {import(\"../View.js\").default} */ (\n event.oldValue\n );\n if (oldView) {\n this.unbindView_(oldView);\n }\n const newView = this.getMap().getView();\n this.bindView_(newView);\n } else if (\n !this.ovmap_.isRendered() &&\n (event.key === MapProperty.TARGET || event.key === MapProperty.SIZE)\n ) {\n this.ovmap_.updateSize();\n }\n }\n\n /**\n * Register listeners for view property changes.\n * @param {import(\"../View.js\").default} view The view.\n * @private\n */\n bindView_(view) {\n if (!this.view_) {\n // Unless an explicit view definition was given, derive default from whatever main map uses.\n const newView = new View({\n projection: view.getProjection(),\n });\n this.ovmap_.setView(newView);\n }\n\n view.addChangeListener(\n ViewProperty.ROTATION,\n this.boundHandleRotationChanged_\n );\n // Sync once with the new view\n this.handleRotationChanged_();\n }\n\n /**\n * Unregister listeners for view property changes.\n * @param {import(\"../View.js\").default} view The view.\n * @private\n */\n unbindView_(view) {\n view.removeChangeListener(\n ViewProperty.ROTATION,\n this.boundHandleRotationChanged_\n );\n }\n\n /**\n * Handle rotation changes to the main map.\n * @private\n */\n handleRotationChanged_() {\n if (this.rotateWithView_) {\n this.ovmap_.getView().setRotation(this.getMap().getView().getRotation());\n }\n }\n\n /**\n * Reset the overview map extent if the box size (width or\n * height) is less than the size of the overview map size times minRatio\n * or is greater than the size of the overview size times maxRatio.\n *\n * If the map extent was not reset, the box size can fits in the defined\n * ratio sizes. This method then checks if is contained inside the overview\n * map current extent. If not, recenter the overview map to the current\n * main map center location.\n * @private\n */\n validateExtent_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n if (!map.isRendered() || !ovmap.isRendered()) {\n return;\n }\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n const extent = view.calculateExtentInternal(mapSize);\n\n if (this.viewExtent_ && equalsExtent(extent, this.viewExtent_)) {\n // repeats of the same extent may indicate constraint conflicts leading to an endless cycle\n return;\n }\n this.viewExtent_ = extent;\n\n const ovmapSize = /** @type {import(\"../size.js\").Size} */ (\n ovmap.getSize()\n );\n\n const ovview = ovmap.getView();\n const ovextent = ovview.calculateExtentInternal(ovmapSize);\n\n const topLeftPixel = ovmap.getPixelFromCoordinateInternal(\n getTopLeft(extent)\n );\n const bottomRightPixel = ovmap.getPixelFromCoordinateInternal(\n getBottomRight(extent)\n );\n\n const boxWidth = Math.abs(topLeftPixel[0] - bottomRightPixel[0]);\n const boxHeight = Math.abs(topLeftPixel[1] - bottomRightPixel[1]);\n\n const ovmapWidth = ovmapSize[0];\n const ovmapHeight = ovmapSize[1];\n\n if (\n boxWidth < ovmapWidth * MIN_RATIO ||\n boxHeight < ovmapHeight * MIN_RATIO ||\n boxWidth > ovmapWidth * MAX_RATIO ||\n boxHeight > ovmapHeight * MAX_RATIO\n ) {\n this.resetExtent_();\n } else if (!containsExtent(ovextent, extent)) {\n this.recenter_();\n }\n }\n\n /**\n * Reset the overview map extent to half calculated min and max ratio times\n * the extent of the main map.\n * @private\n */\n resetExtent_() {\n if (MAX_RATIO === 0 || MIN_RATIO === 0) {\n return;\n }\n\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n const extent = view.calculateExtentInternal(mapSize);\n\n const ovview = ovmap.getView();\n\n // get how many times the current map overview could hold different\n // box sizes using the min and max ratio, pick the step in the middle used\n // to calculate the extent from the main map to set it to the overview map,\n const steps = Math.log(MAX_RATIO / MIN_RATIO) / Math.LN2;\n const ratio = 1 / (Math.pow(2, steps / 2) * MIN_RATIO);\n scaleFromCenter(extent, ratio);\n ovview.fitInternal(polygonFromExtent(extent));\n }\n\n /**\n * Set the center of the overview map to the map center without changing its\n * resolution.\n * @private\n */\n recenter_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n const view = map.getView();\n\n const ovview = ovmap.getView();\n\n ovview.setCenterInternal(view.getCenterInternal());\n }\n\n /**\n * Update the box using the main map extent\n * @private\n */\n updateBox_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n if (!map.isRendered() || !ovmap.isRendered()) {\n return;\n }\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n\n const ovview = ovmap.getView();\n\n const rotation = this.rotateWithView_ ? 0 : -view.getRotation();\n\n const overlay = this.boxOverlay_;\n const box = this.boxOverlay_.getElement();\n const center = view.getCenterInternal();\n const resolution = view.getResolution();\n const ovresolution = ovview.getResolution();\n const width = (mapSize[0] * resolution) / ovresolution;\n const height = (mapSize[1] * resolution) / ovresolution;\n\n // set position using center coordinates\n overlay.setPosition(center);\n\n // set box size calculated from map extent size and overview map resolution\n if (box) {\n box.style.width = width + 'px';\n box.style.height = height + 'px';\n const transform = 'rotate(' + rotation + 'rad)';\n box.style.transform = transform;\n }\n }\n\n /**\n * @private\n */\n updateBoxAfterOvmapIsRendered_() {\n if (this.ovmapPostrenderKey_) {\n return;\n }\n this.ovmapPostrenderKey_ = listenOnce(\n this.ovmap_,\n MapEventType.POSTRENDER,\n function (event) {\n delete this.ovmapPostrenderKey_;\n this.updateBox_();\n },\n this\n );\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n\n // manage overview map if it had not been rendered before and control\n // is expanded\n const ovmap = this.ovmap_;\n if (!this.collapsed_) {\n if (ovmap.isRendered()) {\n this.viewExtent_ = undefined;\n ovmap.render();\n return;\n }\n ovmap.updateSize();\n this.resetExtent_();\n this.updateBoxAfterOvmapIsRendered_();\n }\n }\n\n /**\n * Return `true` if the overview map is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the overview map should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the overview map according to the passed parameter. Will\n * not do anything if the overview map isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Determine if the overview map is collapsed.\n * @return {boolean} The overview map is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n\n /**\n * Return `true` if the overview map view can rotate, `false` otherwise.\n * @return {boolean} True if the control view can rotate.\n * @api\n */\n getRotateWithView() {\n return this.rotateWithView_;\n }\n\n /**\n * Set whether the overview map view should rotate with the main map view.\n * @param {boolean} rotateWithView True if the control view should rotate.\n * @api\n */\n setRotateWithView(rotateWithView) {\n if (this.rotateWithView_ === rotateWithView) {\n return;\n }\n this.rotateWithView_ = rotateWithView;\n if (this.getMap().getView().getRotation() !== 0) {\n if (this.rotateWithView_) {\n this.handleRotationChanged_();\n } else {\n this.ovmap_.getView().setRotation(0);\n }\n this.viewExtent_ = undefined;\n this.validateExtent_();\n this.updateBox_();\n }\n }\n\n /**\n * Return the overview map.\n * @return {import(\"../Map.js\").default} Overview map.\n * @api\n */\n getOverviewMap() {\n return this.ovmap_;\n }\n\n /**\n * Update the overview map element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n this.validateExtent_();\n this.updateBox_();\n }\n}\n\nexport default OverviewMap;\n","/**\n * @module ol/control/ScaleLine\n */\nimport Control from './Control.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {METERS_PER_UNIT, getPointResolution} from '../proj.js';\nimport {assert} from '../asserts.js';\n\n/**\n * @type {string}\n */\nconst UNITS_PROP = 'units';\n\n/**\n * @typedef {'degrees' | 'imperial' | 'nautical' | 'metric' | 'us'} Units\n * Units for the scale line.\n */\n\n/**\n * @const\n * @type {Array}\n */\nconst LEADING_DIGITS = [1, 2, 5];\n\n/**\n * @const\n * @type {number}\n */\nconst DEFAULT_DPI = 25.4 / 0.28;\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} ScaleLineOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className] CSS class name. The default is `ol-scale-bar` when configured with\n * `bar: true`. Otherwise the default is `ol-scale-line`.\n * @property {number} [minWidth=64] Minimum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {number} [maxWidth] Maximum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {Units} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n * @property {number|undefined} [dpi=undefined] dpi of output device such as printer. Only applies\n * when `bar` is `true`. If undefined the OGC default screen pixel size of 0.28mm will be assumed.\n */\n\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nclass ScaleLine extends Control {\n /**\n * @param {Options} [options] Scale line options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const element = document.createElement('div');\n element.style.pointerEvents = 'none';\n\n super({\n element: element,\n render: options.render,\n target: options.target,\n });\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.on;\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.once;\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.un;\n\n const className =\n options.className !== undefined\n ? options.className\n : options.bar\n ? 'ol-scale-bar'\n : 'ol-scale-line';\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.innerElement_ = document.createElement('div');\n this.innerElement_.className = className + '-inner';\n\n this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n this.element.appendChild(this.innerElement_);\n\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n this.viewState_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.maxWidth_ = options.maxWidth;\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = false;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.renderedWidth_ = undefined;\n\n /**\n * @private\n * @type {string}\n */\n this.renderedHTML_ = '';\n\n this.addChangeListener(UNITS_PROP, this.handleUnitsChanged_);\n\n this.setUnits(options.units || 'metric');\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBar_ = options.bar || false;\n\n /**\n * @private\n * @type {number}\n */\n this.scaleBarSteps_ = options.steps || 4;\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBarText_ = options.text || false;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.dpi_ = options.dpi || undefined;\n }\n\n /**\n * Return the units to use in the scale line.\n * @return {Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n getUnits() {\n return this.get(UNITS_PROP);\n }\n\n /**\n * @private\n */\n handleUnitsChanged_() {\n this.updateElement_();\n }\n\n /**\n * Set the units to use in the scale line.\n * @param {Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n setUnits(units) {\n this.set(UNITS_PROP, units);\n }\n\n /**\n * Specify the dpi of output device such as printer.\n * @param {number|undefined} dpi The dpi of output device.\n * @api\n */\n setDpi(dpi) {\n this.dpi_ = dpi;\n }\n\n /**\n * @private\n */\n updateElement_() {\n const viewState = this.viewState_;\n\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const center = viewState.center;\n const projection = viewState.projection;\n const units = this.getUnits();\n const pointResolutionUnits = units == 'degrees' ? 'degrees' : 'm';\n let pointResolution = getPointResolution(\n projection,\n viewState.resolution,\n center,\n pointResolutionUnits\n );\n\n const minWidth =\n (this.minWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI;\n\n const maxWidth =\n this.maxWidth_ !== undefined\n ? (this.maxWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI\n : undefined;\n\n let nominalCount = minWidth * pointResolution;\n let suffix = '';\n if (units == 'degrees') {\n const metersPerDegree = METERS_PER_UNIT.degrees;\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n } else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n } else {\n suffix = '\\u00b0'; // degrees\n }\n } else if (units == 'imperial') {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n } else if (units == 'nautical') {\n pointResolution /= 1852;\n suffix = 'NM';\n } else if (units == 'metric') {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n } else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n } else if (nominalCount < 1000) {\n suffix = 'm';\n } else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n } else if (units == 'us') {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n } else {\n assert(false, 33); // Invalid units\n }\n\n let i = 3 * Math.floor(Math.log(minWidth * pointResolution) / Math.log(10));\n let count, width, decimalCount;\n let previousCount, previousWidth, previousDecimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n const decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n if (maxWidth !== undefined && width >= maxWidth) {\n count = previousCount;\n width = previousWidth;\n decimalCount = previousDecimalCount;\n break;\n } else if (width >= minWidth) {\n break;\n }\n previousCount = count;\n previousWidth = width;\n previousDecimalCount = decimalCount;\n ++i;\n }\n const html = this.scaleBar_\n ? this.createScaleBar(width, count, suffix)\n : count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n }\n\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @return {string} The stringified HTML of the scalebar.\n */\n createScaleBar(width, scale, suffix) {\n const resolutionScale = this.getScaleForResolution();\n const mapScale =\n resolutionScale < 1\n ? Math.round(1 / resolutionScale).toLocaleString() + ' : 1'\n : '1 : ' + Math.round(resolutionScale).toLocaleString();\n const steps = this.scaleBarSteps_;\n const stepWidth = width / steps;\n const scaleSteps = [this.createMarker('absolute')];\n for (let i = 0; i < steps; ++i) {\n const cls =\n i % 2 === 0 ? 'ol-scale-singlebar-odd' : 'ol-scale-singlebar-even';\n scaleSteps.push(\n '

    ' +\n '
    ' +\n '
    ' +\n this.createMarker('relative') +\n // render text every second step, except when only 2 steps\n (i % 2 === 0 || steps === 2\n ? this.createStepText(i, width, false, scale, suffix)\n : '') +\n '
    '\n );\n }\n // render text at the end\n scaleSteps.push(this.createStepText(steps, width, true, scale, suffix));\n\n const scaleBarText = this.scaleBarText_\n ? `
    ` +\n mapScale +\n '
    '\n : '';\n return scaleBarText + scaleSteps.join('');\n }\n\n /**\n * Creates a marker at given position\n * @param {'absolute'|'relative'} position The position, absolute or relative\n * @return {string} The stringified div containing the marker\n */\n createMarker(position) {\n const top = position === 'absolute' ? 3 : -10;\n return (\n '
    '\n );\n }\n\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i The iterator\n * @param {number} width The width the scalebar will currently use\n * @param {boolean} isLast Flag indicating if we add the last step text\n * @param {number} scale The current scale for the whole scalebar\n * @param {string} suffix The suffix for the scale\n * @return {string} The stringified div containing the step text\n */\n createStepText(i, width, isLast, scale, suffix) {\n const length =\n i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_) * i * 100) / 100;\n const lengthString = length + (i === 0 ? '' : ' ' + suffix);\n const margin = i === 0 ? -3 : (width / this.scaleBarSteps_) * -1;\n const minWidth = i === 0 ? 0 : (width / this.scaleBarSteps_) * 2;\n return (\n '
    ' +\n lengthString +\n '
    '\n );\n }\n\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n getScaleForResolution() {\n const resolution = getPointResolution(\n this.viewState_.projection,\n this.viewState_.resolution,\n this.viewState_.center,\n 'm'\n );\n const dpi = this.dpi_ || DEFAULT_DPI;\n const inchesPerMeter = 1000 / 25.4;\n return resolution * inchesPerMeter * dpi;\n }\n\n /**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n } else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n }\n}\n\nexport default ScaleLine;\n","/**\n * @module ol/control/ZoomSlider\n */\n\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport PointerEventType from '../pointer/EventType.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {clamp} from '../math.js';\nimport {easeOut} from '../easing.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {stopPropagation} from '../events/Event.js';\n\n/**\n * The enum for available directions.\n *\n * @enum {number}\n */\nconst Direction = {\n VERTICAL: 0,\n HORIZONTAL: 1,\n};\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoomslider'] CSS class name.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n */\n\n/**\n * @classdesc\n * A slider type of control for zooming.\n *\n * Example:\n *\n * map.addControl(new ZoomSlider());\n *\n * @api\n */\nclass ZoomSlider extends Control {\n /**\n * @param {Options} [options] Zoom slider options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n });\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * Will hold the current resolution of the view.\n *\n * @type {number|undefined}\n * @private\n */\n this.currentResolution_ = undefined;\n\n /**\n * The direction of the slider. Will be determined from actual display of the\n * container and defaults to Direction.VERTICAL.\n *\n * @type {Direction}\n * @private\n */\n this.direction_ = Direction.VERTICAL;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_;\n\n /**\n * @type {number}\n * @private\n */\n this.heightLimit_ = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.widthLimit_ = 0;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startX_;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startY_;\n\n /**\n * The calculated thumb size (border box plus margins). Set when initSlider_\n * is called.\n * @type {import(\"../size.js\").Size}\n * @private\n */\n this.thumbSize_ = null;\n\n /**\n * Whether the slider is initialized.\n * @type {boolean}\n * @private\n */\n this.sliderInitialized_ = false;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoomslider';\n const thumbElement = document.createElement('button');\n thumbElement.setAttribute('type', 'button');\n thumbElement.className = className + '-thumb ' + CLASS_UNSELECTABLE;\n const containerElement = this.element;\n containerElement.className =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n containerElement.appendChild(thumbElement);\n\n containerElement.addEventListener(\n PointerEventType.POINTERDOWN,\n this.handleDraggerStart_.bind(this),\n false\n );\n containerElement.addEventListener(\n PointerEventType.POINTERMOVE,\n this.handleDraggerDrag_.bind(this),\n false\n );\n containerElement.addEventListener(\n PointerEventType.POINTERUP,\n this.handleDraggerEnd_.bind(this),\n false\n );\n\n containerElement.addEventListener(\n EventType.CLICK,\n this.handleContainerClick_.bind(this),\n false\n );\n thumbElement.addEventListener(EventType.CLICK, stopPropagation, false);\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n map.render();\n }\n }\n\n /**\n * Initializes the slider element. This will determine and set this controls\n * direction_ and also constrain the dragging of the thumb to always be within\n * the bounds of the container.\n *\n * @return {boolean} Initialization successful\n * @private\n */\n initSlider_() {\n const container = this.element;\n let containerWidth = container.offsetWidth;\n let containerHeight = container.offsetHeight;\n if (containerWidth === 0 && containerHeight === 0) {\n return (this.sliderInitialized_ = false);\n }\n\n const containerStyle = getComputedStyle(container);\n containerWidth -=\n parseFloat(containerStyle['paddingRight']) +\n parseFloat(containerStyle['paddingLeft']);\n containerHeight -=\n parseFloat(containerStyle['paddingTop']) +\n parseFloat(containerStyle['paddingBottom']);\n const thumb = /** @type {HTMLElement} */ (container.firstElementChild);\n const thumbStyle = getComputedStyle(thumb);\n const thumbWidth =\n thumb.offsetWidth +\n parseFloat(thumbStyle['marginRight']) +\n parseFloat(thumbStyle['marginLeft']);\n const thumbHeight =\n thumb.offsetHeight +\n parseFloat(thumbStyle['marginTop']) +\n parseFloat(thumbStyle['marginBottom']);\n this.thumbSize_ = [thumbWidth, thumbHeight];\n\n if (containerWidth > containerHeight) {\n this.direction_ = Direction.HORIZONTAL;\n this.widthLimit_ = containerWidth - thumbWidth;\n } else {\n this.direction_ = Direction.VERTICAL;\n this.heightLimit_ = containerHeight - thumbHeight;\n }\n return (this.sliderInitialized_ = true);\n }\n\n /**\n * @param {PointerEvent} event The browser event to handle.\n * @private\n */\n handleContainerClick_(event) {\n const view = this.getMap().getView();\n\n const relativePosition = this.getRelativePosition_(\n event.offsetX - this.thumbSize_[0] / 2,\n event.offsetY - this.thumbSize_[1] / 2\n );\n\n const resolution = this.getResolutionForPosition_(relativePosition);\n const zoom = view.getConstrainedZoom(view.getZoomForResolution(resolution));\n\n view.animateInternal({\n zoom: zoom,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n\n /**\n * Handle dragger start events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerStart_(event) {\n if (!this.dragging_ && event.target === this.element.firstElementChild) {\n const element = /** @type {HTMLElement} */ (\n this.element.firstElementChild\n );\n this.getMap().getView().beginInteraction();\n this.startX_ = event.clientX - parseFloat(element.style.left);\n this.startY_ = event.clientY - parseFloat(element.style.top);\n this.dragging_ = true;\n\n if (this.dragListenerKeys_.length === 0) {\n const drag = this.handleDraggerDrag_;\n const end = this.handleDraggerEnd_;\n const doc = this.getMap().getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(doc, PointerEventType.POINTERMOVE, drag, this),\n listen(doc, PointerEventType.POINTERUP, end, this)\n );\n }\n }\n }\n\n /**\n * Handle dragger drag events.\n *\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerDrag_(event) {\n if (this.dragging_) {\n const deltaX = event.clientX - this.startX_;\n const deltaY = event.clientY - this.startY_;\n const relativePosition = this.getRelativePosition_(deltaX, deltaY);\n this.currentResolution_ =\n this.getResolutionForPosition_(relativePosition);\n this.getMap().getView().setResolution(this.currentResolution_);\n }\n }\n\n /**\n * Handle dragger end events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerEnd_(event) {\n if (this.dragging_) {\n const view = this.getMap().getView();\n view.endInteraction();\n\n this.dragging_ = false;\n this.startX_ = undefined;\n this.startY_ = undefined;\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n }\n }\n\n /**\n * Positions the thumb inside its container according to the given resolution.\n *\n * @param {number} res The res.\n * @private\n */\n setThumbPosition_(res) {\n const position = this.getPositionForResolution_(res);\n const thumb = /** @type {HTMLElement} */ (this.element.firstElementChild);\n\n if (this.direction_ == Direction.HORIZONTAL) {\n thumb.style.left = this.widthLimit_ * position + 'px';\n } else {\n thumb.style.top = this.heightLimit_ * position + 'px';\n }\n }\n\n /**\n * Calculates the relative position of the thumb given x and y offsets. The\n * relative position scales from 0 to 1. The x and y offsets are assumed to be\n * in pixel units within the dragger limits.\n *\n * @param {number} x Pixel position relative to the left of the slider.\n * @param {number} y Pixel position relative to the top of the slider.\n * @return {number} The relative position of the thumb.\n * @private\n */\n getRelativePosition_(x, y) {\n let amount;\n if (this.direction_ === Direction.HORIZONTAL) {\n amount = x / this.widthLimit_;\n } else {\n amount = y / this.heightLimit_;\n }\n return clamp(amount, 0, 1);\n }\n\n /**\n * Calculates the corresponding resolution of the thumb given its relative\n * position (where 0 is the minimum and 1 is the maximum).\n *\n * @param {number} position The relative position of the thumb.\n * @return {number} The corresponding resolution.\n * @private\n */\n getResolutionForPosition_(position) {\n const fn = this.getMap().getView().getResolutionForValueFunction();\n return fn(1 - position);\n }\n\n /**\n * Determines the relative position of the slider for the given resolution. A\n * relative position of 0 corresponds to the minimum view resolution. A\n * relative position of 1 corresponds to the maximum view resolution.\n *\n * @param {number} res The resolution.\n * @return {number} The relative position value (between 0 and 1).\n * @private\n */\n getPositionForResolution_(res) {\n const fn = this.getMap().getView().getValueForResolutionFunction();\n return clamp(1 - fn(res), 0, 1);\n }\n\n /**\n * Update the zoomslider element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n if (!mapEvent.frameState) {\n return;\n }\n if (!this.sliderInitialized_ && !this.initSlider_()) {\n return;\n }\n const res = mapEvent.frameState.viewState.resolution;\n this.currentResolution_ = res;\n this.setThumbPosition_(res);\n }\n}\n\nexport default ZoomSlider;\n","/**\n * @module ol/control/ZoomToExtent\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {fromExtent as polygonFromExtent} from '../geom/Polygon.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoom-extent'] Class name.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string|HTMLElement} [label='E'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Fit to extent'] Text label to use for the button tip.\n * @property {import(\"../extent.js\").Extent} [extent] The extent to zoom to. If undefined the validity\n * extent of the view projection is used.\n */\n\n/**\n * @classdesc\n * A button control which, when pressed, changes the map view to a specific\n * extent. To style this control use the css selector `.ol-zoom-extent`.\n *\n * @api\n */\nclass ZoomToExtent extends Control {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target,\n });\n\n /**\n * @type {?import(\"../extent.js\").Extent|null}\n * @protected\n */\n this.extent = options.extent ? options.extent : null;\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoom-extent';\n\n const label = options.label !== undefined ? options.label : 'E';\n const tipLabel =\n options.tipLabel !== undefined ? options.tipLabel : 'Fit to extent';\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(\n typeof label === 'string' ? document.createTextNode(label) : label\n );\n\n button.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleZoomToExtent();\n }\n\n /**\n * @protected\n */\n handleZoomToExtent() {\n const map = this.getMap();\n const view = map.getView();\n const extent = !this.extent\n ? view.getProjection().getExtent()\n : this.extent;\n view.fitInternal(polygonFromExtent(extent));\n }\n}\n\nexport default ZoomToExtent;\n","/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {equals} from '../array.js';\nimport {removeChildren, replaceNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string|HTMLElement} [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} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\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 {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nclass Attribution extends Control {\n /**\n * @param {Options} [options] Attribution options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.ulElement_ = document.createElement('ul');\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.userCollapsed_ = this.collapsed_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.overrideCollapsible_ = options.collapsible !== undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n const className =\n options.className !== undefined ? options.className : 'ol-attribution';\n\n const tipLabel =\n options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n const expandClassName =\n options.expandClassName !== undefined\n ? options.expandClassName\n : className + '-expand';\n\n const collapseLabel =\n options.collapseLabel !== undefined ? options.collapseLabel : '\\u203A';\n\n const collapseClassName =\n options.collapseClassName !== undefined\n ? options.collapseClassName\n : className + '-collapse';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n this.collapseLabel_.className = collapseClassName;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : 'i';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n this.label_.className = expandClassName;\n } else {\n this.label_ = label;\n }\n\n const activeLabel =\n this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.toggleButton_ = document.createElement('button');\n this.toggleButton_.setAttribute('type', 'button');\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n this.toggleButton_.title = tipLabel;\n this.toggleButton_.appendChild(activeLabel);\n\n this.toggleButton_.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.toggleButton_);\n element.appendChild(this.ulElement_);\n\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n this.renderedAttributions_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n collectSourceAttributions_(frameState) {\n const visibleAttributions = Array.from(\n new Set(\n this.getMap()\n .getAllLayers()\n .flatMap((layer) => layer.getAttributions(frameState))\n )\n );\n\n const collapsible = !this.getMap()\n .getAllLayers()\n .some(\n (layer) =>\n layer.getSource() &&\n layer.getSource().getAttributionsCollapsible() === false\n );\n if (!this.overrideCollapsible_) {\n this.setCollapsible(collapsible);\n }\n return visibleAttributions;\n }\n\n /**\n * @private\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n updateElement_(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const attributions = this.collectSourceAttributions_(frameState);\n\n const visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n\n removeChildren(this.ulElement_);\n\n // append the attributions\n for (let i = 0, ii = attributions.length; i < ii; ++i) {\n const element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n\n this.renderedAttributions_ = attributions;\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n this.userCollapsed_ = this.collapsed_;\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n }\n\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (this.userCollapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n this.userCollapsed_ = collapsed;\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n }\n}\n\nexport default Attribution;\n","/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport {VOID} from '../functions.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {removeNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n\n/**\n * @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 * const myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nclass Control extends BaseObject {\n /**\n * @param {Options} options Control options.\n */\n constructor(options) {\n super();\n\n const element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = element ? element : null;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.target_ = null;\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n /**\n * @protected\n * @type {!Array}\n */\n this.listenerKeys = [];\n\n if (options.render) {\n this.render = options.render;\n }\n\n if (options.target) {\n this.setTarget(options.target);\n }\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n removeNode(this.element);\n super.disposeInternal();\n }\n\n /**\n * Get the map associated with this control.\n * @return {import(\"../Map.js\").default|null} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (let i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (map) {\n const target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(\n listen(map, MapEventType.POSTRENDER, this.render, this)\n );\n }\n map.render();\n }\n }\n\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n render(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 setTarget(target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n }\n}\n\nexport default Control;\n","/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {string} [compassClassName='ol-compass'] CSS class name for the compass.\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):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nclass Rotate extends Control {\n /**\n * @param {Options} [options] Rotate options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-rotate';\n\n const label = options.label !== undefined ? options.label : '\\u21E7';\n\n const compassClassName =\n options.compassClassName !== undefined\n ? options.compassClassName\n : 'ol-compass';\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.label_ = null;\n\n if (typeof label === 'string') {\n this.label_ = document.createElement('span');\n this.label_.className = compassClassName;\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n this.label_.classList.add(compassClassName);\n }\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n\n const button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(this.label_);\n\n button.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n\n this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @type {boolean}\n * @private\n */\n this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.rotation_ = undefined;\n\n if (this.autoHide_) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n } else {\n this.resetNorth_();\n }\n }\n\n /**\n * @private\n */\n resetNorth_() {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const 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 } else {\n view.setRotation(0);\n }\n }\n }\n\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n const rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n const transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n const contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n } else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n }\n}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='–'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nclass Zoom extends Control {\n /**\n * @param {Options} [options] Zoom options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoom';\n\n const delta = options.delta !== undefined ? options.delta : 1;\n\n const zoomInClassName =\n options.zoomInClassName !== undefined\n ? options.zoomInClassName\n : className + '-in';\n\n const zoomOutClassName =\n options.zoomOutClassName !== undefined\n ? options.zoomOutClassName\n : className + '-out';\n\n const zoomInLabel =\n options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n const zoomOutLabel =\n options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2013';\n\n const zoomInTipLabel =\n options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n const zoomOutTipLabel =\n options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n\n const inElement = document.createElement('button');\n inElement.className = zoomInClassName;\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(\n typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel\n );\n\n inElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, delta),\n false\n );\n\n const outElement = document.createElement('button');\n outElement.className = zoomOutClassName;\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(\n typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel\n );\n\n outElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, -delta),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n zoomByDelta_(delta) {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n const 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 } else {\n view.setZoom(newZoom);\n }\n }\n }\n}\n\nexport default Zoom;\n","/**\n * @module ol/control/defaults\n */\nimport Attribution from './Attribution.js';\nimport Collection from '../Collection.js';\nimport Rotate from './Rotate.js';\nimport Zoom from './Zoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n */\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} [options] Options for the default controls.\n * @return {Collection} A collection of controls\n * to be used with the {@link module:ol/Map~Map} constructor's `controls` option.\n * @api\n */\nexport function defaults(options) {\n options = options ? options : {};\n\n /** @type {Collection} */\n const controls = new Collection();\n\n const zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n\n const rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n\n const attributionControl =\n options.attribution !== undefined ? options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n\n return controls;\n}\n","/**\n * @module ol/coordinate\n */\nimport {getWidth} from './extent.js';\nimport {modulo, toFixed} from './math.js';\nimport {padNumber} from './string.js';\n\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n const r = circle.getRadius();\n const center = circle.getCenter();\n const x0 = center[0];\n const y0 = center[1];\n const x1 = coordinate[0];\n const y1 = coordinate[1];\n\n let dx = x1 - x0;\n const dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n const d = Math.sqrt(dx * dx + dy * dy);\n\n const x = x0 + (r * dx) / d;\n const y = y0 + (r * dy) / d;\n\n return [x, y];\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n const x0 = coordinate[0];\n const y0 = coordinate[1];\n const start = segment[0];\n const end = segment[1];\n const x1 = start[0];\n const y1 = start[1];\n const x2 = end[0];\n const y2 = end[1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const along =\n dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n let x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n } else if (along >= 1) {\n x = x2;\n y = y2;\n } else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY();\n * const out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY(2);\n * const out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, fractionDigits);\n }\n );\n}\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, fractionDigits) {\n const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n const x = Math.abs(3600 * normalizedDegrees);\n const decimals = fractionDigits || 0;\n\n let deg = Math.floor(x / 3600);\n let min = Math.floor((x - deg * 3600) / 60);\n let sec = toFixed(x - deg * 3600 - min * 60, decimals);\n\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n\n let hdms = deg + '\\u00b0';\n if (min !== 0 || sec !== 0) {\n hdms += ' ' + padNumber(min, 2) + '\\u2032';\n }\n if (sec !== 0) {\n hdms += ' ' + padNumber(sec, 2, decimals) + '\\u2033';\n }\n if (normalizedDegrees !== 0) {\n hdms += ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0);\n }\n\n return hdms;\n}\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(fractionDigits))\n .replace('{y}', coordinate[1].toFixed(fractionDigits));\n }\n return '';\n}\n\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n let equals = true;\n for (let i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n const dx = coord1[0] - coord2[0];\n const dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, fractionDigits) {\n if (coordinate) {\n return (\n degreesToStringHDMS('NS', coordinate[1], fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], fractionDigits)\n );\n }\n return '';\n}\n\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, fractionDigits) {\n return format(coordinate, '{x}, {y}', fractionDigits);\n}\n\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n const worldWidth = getWidth(projection.getExtent());\n const worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, sourceExtentWidth) {\n const projectionExtent = projection.getExtent();\n let worldsAway = 0;\n if (\n projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])\n ) {\n sourceExtentWidth = sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor(\n (coordinate[0] - projectionExtent[0]) / sourceExtentWidth\n );\n }\n return worldsAway;\n}\n","/**\n * @module ol/css\n */\n\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array} families Families.\n */\n\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_HIDDEN = 'ol-hidden';\n\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_SELECTABLE = 'ol-selectable';\n\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSELECTABLE = 'ol-unselectable';\n\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\n\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_COLLAPSED = 'ol-collapsed';\n\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nconst fontRegEx = new RegExp(\n [\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n ].join(''),\n 'i'\n);\nconst fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters|null} The font parameters (or null if the input spec is invalid).\n */\nexport const getFontParameters = function (fontSpec) {\n const match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n const style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (let i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n const value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n","import {WORKER_OFFSCREEN_CANVAS} from './has.js';\n\n/**\n * @module ol/dom\n */\n\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [width] Canvas width.\n * @param {number} [height] Canvas height.\n * @param {Array} [canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [settings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(width, height, canvasPool, settings) {\n /** @type {HTMLCanvasElement|OffscreenCanvas} */\n let canvas;\n if (canvasPool && canvasPool.length) {\n canvas = canvasPool.shift();\n } else if (WORKER_OFFSCREEN_CANVAS) {\n canvas = new OffscreenCanvas(width || 300, height || 300);\n } else {\n canvas = document.createElement('canvas');\n }\n if (width) {\n canvas.width = width;\n }\n if (height) {\n canvas.height = height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (\n canvas.getContext('2d', settings)\n );\n}\n\n/**\n * Releases canvas memory to avoid exceeding memory limits in Safari.\n * See https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n * @param {CanvasRenderingContext2D} context Context.\n */\nexport function releaseCanvas(context) {\n const canvas = context.canvas;\n canvas.width = 1;\n canvas.height = 1;\n context.clearRect(0, 0, 1, 1);\n}\n\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n return width;\n}\n\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n let height = element.offsetHeight;\n const style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n\n return height;\n}\n\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n const parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n\n/**\n * @param {Node} node The node to remove.\n * @return {Node|null} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n const oldChildren = node.childNodes;\n\n for (let i = 0; true; ++i) {\n const oldChild = oldChildren[i];\n const newChild = children[i];\n\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n","/**\n * @module ol/easing\n */\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing.inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n return 1 - inAndOut(2 * (t - 0.5));\n}\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, thisArg, once) {\n if (thisArg && thisArg !== target) {\n listener = listener.bind(thisArg);\n }\n if (once) {\n const originalListener = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener.apply(this, arguments);\n };\n }\n const eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, thisArg) {\n return listen(target, type, listener, thisArg, true);\n}\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass BaseEvent {\n /**\n * @param {string} type Type.\n */\n constructor(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\n\nexport default BaseEvent;\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport {VOID} from '../functions.js';\nimport {clear} from '../obj.js';\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nclass Target extends Disposable {\n /**\n * @param {*} [target] Default event target for dispatched events.\n */\n constructor(target) {\n super();\n\n /**\n * @private\n * @type {*}\n */\n this.eventTarget_ = target;\n\n /**\n * @private\n * @type {Object}\n */\n this.pendingRemovals_ = null;\n\n /**\n * @private\n * @type {Object}\n */\n this.dispatching_ = null;\n\n /**\n * @private\n * @type {Object>}\n */\n this.listeners_ = null;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n addEventListener(type, listener) {\n if (!type || !listener) {\n return;\n }\n const listeners = this.listeners_ || (this.listeners_ = {});\n const listenersForType = listeners[type] || (listeners[type] = []);\n if (!listenersForType.includes(listener)) {\n listenersForType.push(listener);\n }\n }\n\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n dispatchEvent(event) {\n const isString = typeof event === 'string';\n const type = isString ? event : event.type;\n const listeners = this.listeners_ && this.listeners_[type];\n if (!listeners) {\n return;\n }\n\n const evt = isString ? new Event(event) : /** @type {Event} */ (event);\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n const dispatching = this.dispatching_ || (this.dispatching_ = {});\n const pendingRemovals =\n this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n let propagate;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (\n listeners[i]\n ).handleEvent(evt);\n } else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (\n listeners[i]\n ).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n if (--dispatching[type] === 0) {\n let pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.listeners_ && clear(this.listeners_);\n }\n\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n getListeners(type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n }\n\n /**\n * @param {string} [type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n hasListener(type) {\n if (!this.listeners_) {\n return false;\n }\n return type\n ? type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n } else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n }\n}\n\nexport default Target;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {MAC, WEBKIT} from '../has.js';\nimport {assert} from '../asserts.js';\n\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n const conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n let pass = true;\n for (let i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
    `.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function (event) {\n const targetElement = event.map.getTargetElement();\n const activeElement = event.map.getOwnerDocument().activeElement;\n return targetElement.contains(activeElement);\n};\n\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport const focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function (mapBrowserEvent) {\n const originalEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the target element is not editable, i.e. not an `input`,\n * `select`, or `textarea` element and no `contenteditable` attribute is\n * set or inherited, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if the target element is not editable.\n * @api\n */\nexport const targetNotEditable = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const tagName = /** @type {Element} */ (originalEvent.target).tagName;\n return (\n tagName !== 'INPUT' &&\n tagName !== 'SELECT' &&\n tagName !== 'TEXTAREA' &&\n // `isContentEditable` is only available on `HTMLElement`, but it may also be a\n // different type like `SVGElement`.\n // @ts-ignore\n !originalEvent.target.isContentEditable\n );\n};\n\n/**\n * Return `true` if the event originates from a mouse device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a mouse device.\n * @api\n */\nexport const mouseOnly = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvent.pointerType == 'mouse';\n};\n\n/**\n * Return `true` if the event originates from a touchable device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a touchable device.\n * @api\n */\nexport const touchOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'touch';\n};\n\n/**\n * Return `true` if the event originates from a digital pen.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a digital pen.\n * @api\n */\nexport const penOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'pen';\n};\n\n/**\n * Return `true` if the event originates from a primary pointer in\n * contact with the surface or if the left mouse button is pressed.\n * See https://www.w3.org/TR/pointerevents/#button-states.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a primary pointer.\n * @api\n */\nexport const primaryAction = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n return pointerEvent.isPrimary && pointerEvent.button === 0;\n};\n","/**\n * @module ol/extent\n */\nimport Relationship from './extent/Relationship.js';\nimport {assert} from './asserts.js';\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n\n/**\n * Extent corner.\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n const extent = createEmpty();\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent} [dest] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, dest) {\n const minX = Math.min.apply(null, xs);\n const minY = Math.min.apply(null, ys);\n const maxX = Math.max.apply(null, xs);\n const maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, dest);\n}\n\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, dest) {\n if (dest) {\n dest[0] = extent[0] - value;\n dest[1] = extent[1] - value;\n dest[2] = extent[2] + value;\n dest[3] = extent[3] + value;\n return dest;\n }\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n}\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [dest] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent.slice();\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n let dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n } else if (extent[2] < x) {\n dx = x - extent[2];\n } else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n } else if (extent[3] < y) {\n dy = y - extent[3];\n } else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (\n extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]\n );\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const x = coordinate[0];\n const y = coordinate[1];\n let relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n } else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n } else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, dest) {\n if (dest) {\n dest[0] = minX;\n dest[1] = minY;\n dest[2] = maxX;\n dest[3] = maxY;\n return dest;\n }\n return [minX, minY, maxX, maxY];\n}\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(dest) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, dest);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, dest) {\n const x = coordinate[0];\n const y = coordinate[1];\n return createOrUpdate(x, y, x, y, dest);\n}\n\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendCoordinates(extent, coordinates);\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n dest\n) {\n const extent = createOrUpdateEmpty(dest);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array>} rings Rings.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendRings(extent, rings);\n}\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (\n extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]\n );\n}\n\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (\n Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance\n );\n}\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(\n extent,\n flatCoordinates,\n offset,\n end,\n stride\n) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (let i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n let val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n let area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n let coordinate;\n if (corner === 'bottom-left') {\n coordinate = getBottomLeft(extent);\n } else if (corner === 'bottom-right') {\n coordinate = getBottomRight(extent);\n } else if (corner === 'top-left') {\n coordinate = getTopLeft(extent);\n } else if (corner === 'top-right') {\n coordinate = getTopRight(extent);\n } else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n const minX = Math.min(extent1[0], extent2[0]);\n const minY = Math.min(extent1[1], extent2[1]);\n const maxX = Math.max(extent1[2], extent2[2]);\n const maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, dest) {\n const [x0, y0, x1, y1, x2, y2, x3, y3] = getRotatedViewport(\n center,\n resolution,\n rotation,\n size\n );\n return createOrUpdate(\n Math.min(x0, x1, x2, x3),\n Math.min(y0, y1, y2, y3),\n Math.max(x0, x1, x2, x3),\n Math.max(y0, y1, y2, y3),\n dest\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array} Linear ring representing the viewport.\n */\nexport function getRotatedViewport(center, resolution, rotation, size) {\n const dx = (resolution * size[0]) / 2;\n const dy = (resolution * size[1]) / 2;\n const cosRotation = Math.cos(rotation);\n const sinRotation = Math.sin(rotation);\n const xCos = dx * cosRotation;\n const xSin = dx * sinRotation;\n const yCos = dy * cosRotation;\n const ySin = dy * sinRotation;\n const x = center[0];\n const y = center[1];\n return [\n x - xCos + ySin,\n y - xSin - yCos,\n x - xCos - ySin,\n y - xSin + yCos,\n x + xCos - ySin,\n y + xSin + yCos,\n x + xCos + ySin,\n y + xSin - yCos,\n x - xCos + ySin,\n y - xSin - yCos,\n ];\n}\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n const intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [dest] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, dest) {\n const intersection = dest ? dest : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n } else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n } else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n } else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n } else {\n intersection[3] = extent2[3];\n }\n } else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (\n extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]\n );\n}\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n let intersects = false;\n const startRel = coordinateRelationship(extent, start);\n const endRel = coordinateRelationship(extent, end);\n if (\n startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING\n ) {\n intersects = true;\n } else {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const startX = start[0];\n const startY = start[1];\n const endX = end[0];\n const endY = end[1];\n const slope = (endY - startY) / (endX - startX);\n let x, y;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)\n ) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)\n ) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)\n ) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [dest] Destination extent.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, dest, stops) {\n if (isEmpty(extent)) {\n return createOrUpdateEmpty(dest);\n }\n let coordinates = [];\n if (stops > 1) {\n const width = extent[2] - extent[0];\n const height = extent[3] - extent[1];\n for (let i = 0; i < stops; ++i) {\n coordinates.push(\n extent[0] + (width * i) / stops,\n extent[1],\n extent[2],\n extent[1] + (height * i) / stops,\n extent[2] - (width * i) / stops,\n extent[3],\n extent[0],\n extent[3] - (height * i) / stops\n );\n }\n } else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n const xs = [];\n const ys = [];\n for (let i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, dest);\n}\n\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n const projectionExtent = projection.getExtent();\n const center = getCenter(extent);\n if (\n projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])\n ) {\n const worldWidth = getWidth(projectionExtent);\n const worldsAway = Math.floor(\n (center[0] - projectionExtent[0]) / worldWidth\n );\n const offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n\n/**\n * Fits the extent to the real world\n *\n * If the extent does not cross the anti meridian, this will return the extent in an array\n * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the\n * real world\n *\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Array} The extent within the real world extent.\n */\nexport function wrapAndSliceX(extent, projection) {\n if (projection.canWrapX()) {\n const projectionExtent = projection.getExtent();\n\n if (!isFinite(extent[0]) || !isFinite(extent[2])) {\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n\n wrapX(extent, projection);\n const worldWidth = getWidth(projectionExtent);\n\n if (getWidth(extent) > worldWidth) {\n // the extent wraps around on itself\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n if (extent[0] < projectionExtent[0]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0] + worldWidth, extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2], extent[3]],\n ];\n }\n if (extent[2] > projectionExtent[2]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0], extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2] - worldWidth, extent[3]],\n ];\n }\n }\n\n return [extent];\n}\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n","/**\n * @module ol/featureloader\n */\nimport {VOID} from './functions.js';\n\n/**\n *\n * @type {boolean}\n * @private\n */\nlet withCredentials = false;\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * load features.\n *\n * This function takes up to 5 arguments. These are an {@link module:ol/extent~Extent} representing\n * the area to be loaded, a `{number}` representing the resolution (map units per pixel), an\n * {@link module:ol/proj/Projection~Projection} for the projection, an optional success callback that should get\n * the loaded features passed as an argument and an optional failure callback with no arguments. If\n * the callbacks are not used, the corresponding vector source will not fire `'featuresloadend'` and\n * `'featuresloaderror'` events. `this` within the function is bound to the\n * {@link module:ol/source/Vector~VectorSource} it's called from.\n *\n * The function is responsible for loading the features and adding them to the\n * source.\n * @typedef {function(this:(import(\"./source/Vector\").default|import(\"./VectorTile.js\").default),\n * import(\"./extent.js\").Extent,\n * number,\n * import(\"./proj/Projection.js\").default,\n * function(Array): void=,\n * function(): void=): void} FeatureLoader\n * @api\n */\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * get the url to load features from.\n *\n * This function takes an {@link module:ol/extent~Extent} representing the area\n * to be loaded, a `{number}` representing the resolution (map units per pixel)\n * and an {@link module:ol/proj/Projection~Projection} for the projection as\n * arguments and returns a `{string}` representing the URL.\n * @typedef {function(import(\"./extent.js\").Extent, number, import(\"./proj/Projection.js\").default): string} FeatureUrlFunction\n * @api\n */\n\n/**\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array, import(\"./proj/Projection.js\").default): void} success Success\n * Function called with the loaded features and optionally with the data projection.\n * @param {function(): void} failure Failure\n * Function called when loading failed.\n */\nexport function loadFeaturesXhr(\n url,\n format,\n extent,\n resolution,\n projection,\n success,\n failure\n) {\n const xhr = new XMLHttpRequest();\n xhr.open(\n 'GET',\n typeof url === 'function' ? url(extent, resolution, projection) : url,\n true\n );\n if (format.getType() == 'arraybuffer') {\n xhr.responseType = 'arraybuffer';\n }\n xhr.withCredentials = withCredentials;\n /**\n * @param {Event} event Event.\n * @private\n */\n xhr.onload = function (event) {\n // status will be 0 for file:// urls\n if (!xhr.status || (xhr.status >= 200 && xhr.status < 300)) {\n const type = format.getType();\n /** @type {Document|Node|Object|string|undefined} */\n let source;\n if (type == 'json' || type == 'text') {\n source = xhr.responseText;\n } else if (type == 'xml') {\n source = xhr.responseXML;\n if (!source) {\n source = new DOMParser().parseFromString(\n xhr.responseText,\n 'application/xml'\n );\n }\n } else if (type == 'arraybuffer') {\n source = /** @type {ArrayBuffer} */ (xhr.response);\n }\n if (source) {\n success(\n /** @type {Array} */\n (\n format.readFeatures(source, {\n extent: extent,\n featureProjection: projection,\n })\n ),\n format.readProjection(source)\n );\n } else {\n failure();\n }\n } else {\n failure();\n }\n };\n /**\n * @private\n */\n xhr.onerror = failure;\n xhr.send();\n}\n\n/**\n * Create an XHR feature loader for a `url` and `format`. The feature loader\n * loads features (with XHR), parses the features, and adds them to the\n * vector source.\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @return {FeatureLoader} The feature loader.\n * @api\n */\nexport function xhr(url, format) {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array): void} [success] Success\n * Function called when loading succeeded.\n * @param {function(): void} [failure] Failure\n * Function called when loading failed.\n */\n return function (extent, resolution, projection, success, failure) {\n const source = /** @type {import(\"./source/Vector\").default} */ (this);\n loadFeaturesXhr(\n url,\n format,\n extent,\n resolution,\n projection,\n /**\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data\n * projection.\n */\n function (features, dataProjection) {\n source.addFeatures(features);\n if (success !== undefined) {\n success(features);\n }\n },\n /* FIXME handle error */ failure ? failure : VOID\n );\n };\n}\n\n/**\n * Setter for the withCredentials configuration for the XHR.\n *\n * @param {boolean} xhrWithCredentials The value of withCredentials to set.\n * Compare https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/\n * @api\n */\nexport function setWithCredentials(xhrWithCredentials) {\n withCredentials = xhrWithCredentials;\n}\n","/**\n * @module ol/format/EsriJSON\n */\nimport Feature from '../Feature.js';\nimport JSONFeature from './JSONFeature.js';\nimport LineString from '../geom/LineString.js';\nimport LinearRing from '../geom/LinearRing.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport {assert} from '../asserts.js';\nimport {containsExtent} from '../extent.js';\nimport {deflateCoordinates} from '../geom/flat/deflate.js';\nimport {get as getProjection} from '../proj.js';\nimport {isEmpty} from '../obj.js';\nimport {linearRingIsClockwise} from '../geom/flat/orient.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @typedef {import(\"arcgis-rest-api\").Feature} EsriJSONFeature\n * @typedef {import(\"arcgis-rest-api\").FeatureSet} EsriJSONFeatureSet\n * @typedef {import(\"arcgis-rest-api\").Geometry} EsriJSONGeometry\n * @typedef {import(\"arcgis-rest-api\").Point} EsriJSONPoint\n * @typedef {import(\"arcgis-rest-api\").Polyline} EsriJSONPolyline\n * @typedef {import(\"arcgis-rest-api\").Polygon} EsriJSONPolygon\n * @typedef {import(\"arcgis-rest-api\").Multipoint} EsriJSONMultipoint\n * @typedef {import(\"arcgis-rest-api\").HasZM} EsriJSONHasZM\n * @typedef {import(\"arcgis-rest-api\").Position} EsriJSONPosition\n * @typedef {import(\"arcgis-rest-api\").SpatialReferenceWkid} EsriJSONSpatialReferenceWkid\n */\n\n/**\n * @typedef {Object} EsriJSONMultiPolygon\n * @property {Array>>>} rings Rings for the MultiPolygon.\n * @property {boolean} [hasM] If the polygon coordinates have an M value.\n * @property {boolean} [hasZ] If the polygon coordinates have a Z value.\n * @property {EsriJSONSpatialReferenceWkid} [spatialReference] The coordinate reference system.\n */\n\n/**\n * @const\n * @type {Object}\n */\nconst GEOMETRY_READERS = {\n Point: readPointGeometry,\n LineString: readLineStringGeometry,\n Polygon: readPolygonGeometry,\n MultiPoint: readMultiPointGeometry,\n MultiLineString: readMultiLineStringGeometry,\n MultiPolygon: readMultiPolygonGeometry,\n};\n\n/**\n * @const\n * @type {Object}\n */\nconst GEOMETRY_WRITERS = {\n Point: writePointGeometry,\n LineString: writeLineStringGeometry,\n Polygon: writePolygonGeometry,\n MultiPoint: writeMultiPointGeometry,\n MultiLineString: writeMultiLineStringGeometry,\n MultiPolygon: writeMultiPolygonGeometry,\n};\n\n/**\n * @typedef {Object} Options\n * @property {string} [geometryName] Geometry name to use when creating features.\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the EsriJSON format.\n *\n * @api\n */\nclass EsriJSON extends JSONFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super();\n\n /**\n * Name of the geometry attribute for features.\n * @type {string|undefined}\n * @private\n */\n this.geometryName_ = options.geometryName;\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @param {string} [idField] Name of the field where to get the id from.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromObject(object, options, idField) {\n const esriJSONFeature = /** @type {EsriJSONFeature} */ (object);\n const geometry = readGeometry(esriJSONFeature.geometry, options);\n const feature = new Feature();\n if (this.geometryName_) {\n feature.setGeometryName(this.geometryName_);\n }\n feature.setGeometry(geometry);\n if (esriJSONFeature.attributes) {\n feature.setProperties(esriJSONFeature.attributes, true);\n const id = esriJSONFeature.attributes[idField];\n if (id !== undefined) {\n feature.setId(/** @type {number} */ (id));\n }\n }\n return feature;\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromObject(object, options) {\n options = options ? options : {};\n if (object['features']) {\n const esriJSONFeatureSet = /** @type {EsriJSONFeatureSet} */ (object);\n /** @type {Array} */\n const features = [];\n const esriJSONFeatures = esriJSONFeatureSet.features;\n for (let i = 0, ii = esriJSONFeatures.length; i < ii; ++i) {\n features.push(\n this.readFeatureFromObject(\n esriJSONFeatures[i],\n options,\n object.objectIdFieldName\n )\n );\n }\n return features;\n }\n return [this.readFeatureFromObject(object, options)];\n }\n\n /**\n * @param {EsriJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromObject(object, options) {\n return readGeometry(object, options);\n }\n\n /**\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromObject(object) {\n if (\n object['spatialReference'] &&\n object['spatialReference']['wkid'] !== undefined\n ) {\n const spatialReference = /** @type {EsriJSONSpatialReferenceWkid} */ (\n object['spatialReference']\n );\n const crs = spatialReference.wkid;\n return getProjection('EPSG:' + crs);\n }\n return null;\n }\n\n /**\n * Encode a geometry as a EsriJSON object.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONGeometry} Object.\n * @api\n */\n writeGeometryObject(geometry, options) {\n return writeGeometry(geometry, this.adaptOptions(options));\n }\n\n /**\n * Encode a feature as a esriJSON Feature object.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n * @api\n */\n writeFeatureObject(feature, options) {\n options = this.adaptOptions(options);\n const object = {};\n if (!feature.hasProperties()) {\n object['attributes'] = {};\n return object;\n }\n const properties = feature.getProperties();\n const geometry = feature.getGeometry();\n if (geometry) {\n object['geometry'] = writeGeometry(geometry, options);\n const projection =\n options && (options.dataProjection || options.featureProjection);\n if (projection) {\n object['geometry']['spatialReference'] =\n /** @type {EsriJSONSpatialReferenceWkid} */ ({\n wkid: Number(getProjection(projection).getCode().split(':').pop()),\n });\n }\n delete properties[feature.getGeometryName()];\n }\n if (!isEmpty(properties)) {\n object['attributes'] = properties;\n } else {\n object['attributes'] = {};\n }\n return object;\n }\n\n /**\n * Encode an array of features as a EsriJSON object.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONFeatureSet} EsriJSON Object.\n * @api\n */\n writeFeaturesObject(features, options) {\n options = this.adaptOptions(options);\n const objects = [];\n for (let i = 0, ii = features.length; i < ii; ++i) {\n objects.push(this.writeFeatureObject(features[i], options));\n }\n return {\n 'features': objects,\n };\n }\n}\n\n/**\n * @param {EsriJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, options) {\n if (!object) {\n return null;\n }\n /** @type {import(\"../geom/Geometry.js\").Type} */\n let type;\n if (typeof object['x'] === 'number' && typeof object['y'] === 'number') {\n type = 'Point';\n } else if (object['points']) {\n type = 'MultiPoint';\n } else if (object['paths']) {\n const esriJSONPolyline = /** @type {EsriJSONPolyline} */ (object);\n if (esriJSONPolyline.paths.length === 1) {\n type = 'LineString';\n } else {\n type = 'MultiLineString';\n }\n } else if (object['rings']) {\n const esriJSONPolygon = /** @type {EsriJSONPolygon} */ (object);\n const layout = getGeometryLayout(esriJSONPolygon);\n const rings = convertRings(esriJSONPolygon.rings, layout);\n if (rings.length === 1) {\n type = 'Polygon';\n object = Object.assign({}, object, {['rings']: rings[0]});\n } else {\n type = 'MultiPolygon';\n object = Object.assign({}, object, {['rings']: rings});\n }\n }\n const geometryReader = GEOMETRY_READERS[type];\n return transformGeometryWithOptions(geometryReader(object), false, options);\n}\n\n/**\n * Determines inner and outer rings.\n * Checks if any polygons in this array contain any other polygons in this\n * array. It is used for checking for holes.\n * Logic inspired by: https://github.com/Esri/terraformer-arcgis-parser\n * @param {Array>>} rings Rings.\n * @param {import(\"../geom/Geometry.js\").GeometryLayout} layout Geometry layout.\n * @return {Array>>>} Transformed rings.\n */\nfunction convertRings(rings, layout) {\n const flatRing = [];\n const outerRings = [];\n const holes = [];\n let i, ii;\n for (i = 0, ii = rings.length; i < ii; ++i) {\n flatRing.length = 0;\n deflateCoordinates(flatRing, 0, rings[i], layout.length);\n // is this ring an outer ring? is it clockwise?\n const clockwise = linearRingIsClockwise(\n flatRing,\n 0,\n flatRing.length,\n layout.length\n );\n if (clockwise) {\n outerRings.push([rings[i]]);\n } else {\n holes.push(rings[i]);\n }\n }\n while (holes.length) {\n const hole = holes.shift();\n let matched = false;\n // loop over all outer rings and see if they contain our hole.\n for (i = outerRings.length - 1; i >= 0; i--) {\n const outerRing = outerRings[i][0];\n const containsHole = containsExtent(\n new LinearRing(outerRing).getExtent(),\n new LinearRing(hole).getExtent()\n );\n if (containsHole) {\n // the hole is contained push it into our polygon\n outerRings[i].push(hole);\n matched = true;\n break;\n }\n }\n if (!matched) {\n // no outer rings contain this hole turn it into and outer\n // ring (reverse it)\n outerRings.push([hole.reverse()]);\n }\n }\n return outerRings;\n}\n\n/**\n * @param {EsriJSONPoint} object Object.\n * @return {import(\"../geom/Geometry.js\").default} Point.\n */\nfunction readPointGeometry(object) {\n let point;\n if (object.m !== undefined && object.z !== undefined) {\n point = new Point([object.x, object.y, object.z, object.m], 'XYZM');\n } else if (object.z !== undefined) {\n point = new Point([object.x, object.y, object.z], 'XYZ');\n } else if (object.m !== undefined) {\n point = new Point([object.x, object.y, object.m], 'XYM');\n } else {\n point = new Point([object.x, object.y]);\n }\n return point;\n}\n\n/**\n * @param {EsriJSONPolyline} object Object.\n * @return {import(\"../geom/Geometry.js\").default} LineString.\n */\nfunction readLineStringGeometry(object) {\n const layout = getGeometryLayout(object);\n return new LineString(object.paths[0], layout);\n}\n\n/**\n * @param {EsriJSONPolyline} object Object.\n * @return {import(\"../geom/Geometry.js\").default} MultiLineString.\n */\nfunction readMultiLineStringGeometry(object) {\n const layout = getGeometryLayout(object);\n return new MultiLineString(object.paths, layout);\n}\n\n/**\n * @param {EsriJSONHasZM} object Object.\n * @return {import(\"../geom/Geometry.js\").GeometryLayout} The geometry layout to use.\n */\nfunction getGeometryLayout(object) {\n /** @type {import(\"../geom/Geometry.js\").GeometryLayout} */\n let layout = 'XY';\n if (object.hasZ === true && object.hasM === true) {\n layout = 'XYZM';\n } else if (object.hasZ === true) {\n layout = 'XYZ';\n } else if (object.hasM === true) {\n layout = 'XYM';\n }\n return layout;\n}\n\n/**\n * @param {EsriJSONMultipoint} object Object.\n * @return {import(\"../geom/Geometry.js\").default} MultiPoint.\n */\nfunction readMultiPointGeometry(object) {\n const layout = getGeometryLayout(object);\n return new MultiPoint(object.points, layout);\n}\n\n/**\n * @param {EsriJSONMultiPolygon} object Object.\n * @return {import(\"../geom/Geometry.js\").default} MultiPolygon.\n */\nfunction readMultiPolygonGeometry(object) {\n const layout = getGeometryLayout(object);\n return new MultiPolygon(object.rings, layout);\n}\n\n/**\n * @param {EsriJSONPolygon} object Object.\n * @return {import(\"../geom/Geometry.js\").default} Polygon.\n */\nfunction readPolygonGeometry(object) {\n const layout = getGeometryLayout(object);\n return new Polygon(object.rings, layout);\n}\n\n/**\n * @param {import(\"../geom/Point.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPoint} EsriJSON geometry.\n */\nfunction writePointGeometry(geometry, options) {\n const coordinates = geometry.getCoordinates();\n /** @type {EsriJSONPoint} */\n let esriJSON;\n const layout = geometry.getLayout();\n if (layout === 'XYZ') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n z: coordinates[2],\n };\n } else if (layout === 'XYM') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n m: coordinates[2],\n };\n } else if (layout === 'XYZM') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n z: coordinates[2],\n m: coordinates[3],\n };\n } else if (layout === 'XY') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n };\n } else {\n assert(false, 34); // Invalid geometry layout\n }\n return esriJSON;\n}\n\n/**\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @return {Object} Object with boolean hasZ and hasM keys.\n */\nfunction getHasZM(geometry) {\n const layout = geometry.getLayout();\n return {\n hasZ: layout === 'XYZ' || layout === 'XYZM',\n hasM: layout === 'XYM' || layout === 'XYZM',\n };\n}\n\n/**\n * @param {import(\"../geom/LineString.js\").default} lineString Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolyline} EsriJSON geometry.\n */\nfunction writeLineStringGeometry(lineString, options) {\n const hasZM = getHasZM(lineString);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n paths: [\n /** @type {Array} */ (lineString.getCoordinates()),\n ],\n };\n}\n\n/**\n * @param {import(\"../geom/Polygon.js\").default} polygon Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolygon} EsriJSON geometry.\n */\nfunction writePolygonGeometry(polygon, options) {\n // Esri geometries use the left-hand rule\n const hasZM = getHasZM(polygon);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n rings: /** @type {Array>} */ (\n polygon.getCoordinates(false)\n ),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiLineString.js\").default} multiLineString Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolyline} EsriJSON geometry.\n */\nfunction writeMultiLineStringGeometry(multiLineString, options) {\n const hasZM = getHasZM(multiLineString);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n paths: /** @type {Array>} */ (\n multiLineString.getCoordinates()\n ),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiPoint.js\").default} multiPoint Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONMultipoint} EsriJSON geometry.\n */\nfunction writeMultiPointGeometry(multiPoint, options) {\n const hasZM = getHasZM(multiPoint);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n points: /** @type {Array} */ (\n multiPoint.getCoordinates()\n ),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolygon} EsriJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, options) {\n const hasZM = getHasZM(geometry);\n const coordinates = geometry.getCoordinates(false);\n const output = [];\n for (let i = 0; i < coordinates.length; i++) {\n for (let x = coordinates[i].length - 1; x >= 0; x--) {\n output.push(coordinates[i][x]);\n }\n }\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n rings: /** @type {Array>} */ (output),\n };\n}\n\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONGeometry} EsriJSON geometry.\n */\nfunction writeGeometry(geometry, options) {\n const geometryWriter = GEOMETRY_WRITERS[geometry.getType()];\n return geometryWriter(\n transformGeometryWithOptions(geometry, true, options),\n options\n );\n}\n\nexport default EsriJSON;\n","/**\n * @module ol/xml\n */\nimport {extend} from './array.js';\n\n/**\n * When using {@link module:ol/xml.makeChildAppender} or\n * {@link module:ol/xml.makeSimpleNodeFactory}, the top `objectStack` item needs\n * to have this structure.\n * @typedef {Object} NodeStackItem\n * @property {Element} node Node.\n */\n\n/**\n * @typedef {function(Element, Array<*>): void} Parser\n */\n\n/**\n * @typedef {function(Element, *, Array<*>): void} Serializer\n */\n\n/**\n * @type {string}\n */\nexport const XML_SCHEMA_INSTANCE_URI =\n 'http://www.w3.org/2001/XMLSchema-instance';\n\n/**\n * @param {string} namespaceURI Namespace URI.\n * @param {string} qualifiedName Qualified name.\n * @return {Element} Node.\n */\nexport function createElementNS(namespaceURI, qualifiedName) {\n return getDocument().createElementNS(namespaceURI, qualifiedName);\n}\n\n/**\n * Recursively grab all text content of child nodes into a single string.\n * @param {Node} node Node.\n * @param {boolean} normalizeWhitespace Normalize whitespace: remove all line\n * breaks.\n * @return {string} All text content.\n * @api\n */\nexport function getAllTextContent(node, normalizeWhitespace) {\n return getAllTextContent_(node, normalizeWhitespace, []).join('');\n}\n\n/**\n * Recursively grab all text content of child nodes into a single string.\n * @param {Node} node Node.\n * @param {boolean} normalizeWhitespace Normalize whitespace: remove all line\n * breaks.\n * @param {Array} accumulator Accumulator.\n * @private\n * @return {Array} Accumulator.\n */\nexport function getAllTextContent_(node, normalizeWhitespace, accumulator) {\n if (\n node.nodeType == Node.CDATA_SECTION_NODE ||\n node.nodeType == Node.TEXT_NODE\n ) {\n if (normalizeWhitespace) {\n accumulator.push(String(node.nodeValue).replace(/(\\r\\n|\\r|\\n)/g, ''));\n } else {\n accumulator.push(node.nodeValue);\n }\n } else {\n let n;\n for (n = node.firstChild; n; n = n.nextSibling) {\n getAllTextContent_(n, normalizeWhitespace, accumulator);\n }\n }\n return accumulator;\n}\n\n/**\n * @param {Object} object Object.\n * @return {boolean} Is a document.\n */\nexport function isDocument(object) {\n return 'documentElement' in object;\n}\n\n/**\n * @param {Element} node Node.\n * @param {?string} namespaceURI Namespace URI.\n * @param {string} name Attribute name.\n * @return {string} Value\n */\nexport function getAttributeNS(node, namespaceURI, name) {\n return node.getAttributeNS(namespaceURI, name) || '';\n}\n\n/**\n * Parse an XML string to an XML Document.\n * @param {string} xml XML.\n * @return {Document} Document.\n * @api\n */\nexport function parse(xml) {\n return new DOMParser().parseFromString(xml, 'application/xml');\n}\n\n/**\n * Make an array extender function for extending the array at the top of the\n * object stack.\n * @param {function(this: T, Node, Array<*>): (Array<*>|undefined)} valueReader Value reader.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeArrayExtender(valueReader, thisArg) {\n return (\n /**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n function (node, objectStack) {\n const value = valueReader.call(\n thisArg !== undefined ? thisArg : this,\n node,\n objectStack\n );\n if (value !== undefined) {\n const array = /** @type {Array<*>} */ (\n objectStack[objectStack.length - 1]\n );\n extend(array, value);\n }\n }\n );\n}\n\n/**\n * Make an array pusher function for pushing to the array at the top of the\n * object stack.\n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeArrayPusher(valueReader, thisArg) {\n return (\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n function (node, objectStack) {\n const value = valueReader.call(\n thisArg !== undefined ? thisArg : this,\n node,\n objectStack\n );\n if (value !== undefined) {\n const array = /** @type {Array<*>} */ (\n objectStack[objectStack.length - 1]\n );\n array.push(value);\n }\n }\n );\n}\n\n/**\n * Make an object stack replacer function for replacing the object at the\n * top of the stack.\n * @param {function(this: T, Node, Array<*>): *} valueReader Value reader.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeReplacer(valueReader, thisArg) {\n return (\n /**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n function (node, objectStack) {\n const value = valueReader.call(\n thisArg !== undefined ? thisArg : this,\n node,\n objectStack\n );\n if (value !== undefined) {\n objectStack[objectStack.length - 1] = value;\n }\n }\n );\n}\n\n/**\n * Make an object property pusher function for adding a property to the\n * object at the top of the stack.\n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.\n * @param {string} [property] Property.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeObjectPropertyPusher(valueReader, property, thisArg) {\n return (\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n function (node, objectStack) {\n const value = valueReader.call(\n thisArg !== undefined ? thisArg : this,\n node,\n objectStack\n );\n if (value !== undefined) {\n const object = /** @type {!Object} */ (\n objectStack[objectStack.length - 1]\n );\n const name = property !== undefined ? property : node.localName;\n let array;\n if (name in object) {\n array = object[name];\n } else {\n array = [];\n object[name] = array;\n }\n array.push(value);\n }\n }\n );\n}\n\n/**\n * Make an object property setter function.\n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.\n * @param {string} [property] Property.\n * @param {T} [thisArg] The object to use as `this` in `valueReader`.\n * @return {Parser} Parser.\n * @template T\n */\nexport function makeObjectPropertySetter(valueReader, property, thisArg) {\n return (\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n function (node, objectStack) {\n const value = valueReader.call(\n thisArg !== undefined ? thisArg : this,\n node,\n objectStack\n );\n if (value !== undefined) {\n const object = /** @type {!Object} */ (\n objectStack[objectStack.length - 1]\n );\n const name = property !== undefined ? property : node.localName;\n object[name] = value;\n }\n }\n );\n}\n\n/**\n * Create a serializer that appends nodes written by its `nodeWriter` to its\n * designated parent. The parent is the `node` of the\n * {@link module:ol/xml~NodeStackItem} at the top of the `objectStack`.\n * @param {function(this: T, Node, V, Array<*>): void} nodeWriter Node writer.\n * @param {T} [thisArg] The object to use as `this` in `nodeWriter`.\n * @return {Serializer} Serializer.\n * @template T, V\n */\nexport function makeChildAppender(nodeWriter, thisArg) {\n return function (node, value, objectStack) {\n nodeWriter.call(\n thisArg !== undefined ? thisArg : this,\n node,\n value,\n objectStack\n );\n const parent = /** @type {NodeStackItem} */ (\n objectStack[objectStack.length - 1]\n );\n const parentNode = parent.node;\n parentNode.appendChild(node);\n };\n}\n\n/**\n * Create a serializer that calls the provided `nodeWriter` from\n * {@link module:ol/xml.serialize}. This can be used by the parent writer to have the\n * `nodeWriter` called with an array of values when the `nodeWriter` was\n * designed to serialize a single item. An example would be a LineString\n * geometry writer, which could be reused for writing MultiLineString\n * geometries.\n * @param {function(this: T, Element, V, Array<*>): void} nodeWriter Node writer.\n * @param {T} [thisArg] The object to use as `this` in `nodeWriter`.\n * @return {Serializer} Serializer.\n * @template T, V\n */\nexport function makeArraySerializer(nodeWriter, thisArg) {\n let serializersNS, nodeFactory;\n return function (node, value, objectStack) {\n if (serializersNS === undefined) {\n serializersNS = {};\n const serializers = {};\n serializers[node.localName] = nodeWriter;\n serializersNS[node.namespaceURI] = serializers;\n nodeFactory = makeSimpleNodeFactory(node.localName);\n }\n serialize(serializersNS, nodeFactory, value, objectStack);\n };\n}\n\n/**\n * Create a node factory which can use the `keys` passed to\n * {@link module:ol/xml.serialize} or {@link module:ol/xml.pushSerializeAndPop} as node names,\n * or a fixed node name. The namespace of the created nodes can either be fixed,\n * or the parent namespace will be used.\n * @param {string} [fixedNodeName] Fixed node name which will be used for all\n * created nodes. If not provided, the 3rd argument to the resulting node\n * factory needs to be provided and will be the nodeName.\n * @param {string} [fixedNamespaceURI] Fixed namespace URI which will be used for\n * all created nodes. If not provided, the namespace of the parent node will\n * be used.\n * @return {function(*, Array<*>, string=): (Node|undefined)} Node factory.\n */\nexport function makeSimpleNodeFactory(fixedNodeName, fixedNamespaceURI) {\n return (\n /**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [newNodeName] Node name.\n * @return {Node} Node.\n */\n function (value, objectStack, newNodeName) {\n const context = /** @type {NodeStackItem} */ (\n objectStack[objectStack.length - 1]\n );\n const node = context.node;\n let nodeName = fixedNodeName;\n if (nodeName === undefined) {\n nodeName = newNodeName;\n }\n\n const namespaceURI =\n fixedNamespaceURI !== undefined ? fixedNamespaceURI : node.namespaceURI;\n return createElementNS(namespaceURI, /** @type {string} */ (nodeName));\n }\n );\n}\n\n/**\n * A node factory that creates a node using the parent's `namespaceURI` and the\n * `nodeName` passed by {@link module:ol/xml.serialize} or\n * {@link module:ol/xml.pushSerializeAndPop} to the node factory.\n * @const\n * @type {function(*, Array<*>, string=): (Node|undefined)}\n */\nexport const OBJECT_PROPERTY_NODE_FACTORY = makeSimpleNodeFactory();\n\n/**\n * Create an array of `values` to be used with {@link module:ol/xml.serialize} or\n * {@link module:ol/xml.pushSerializeAndPop}, where `orderedKeys` has to be provided as\n * `key` argument.\n * @param {Object} object Key-value pairs for the sequence. Keys can\n * be a subset of the `orderedKeys`.\n * @param {Array} orderedKeys Keys in the order of the sequence.\n * @return {Array<*>} Values in the order of the sequence. The resulting array\n * has the same length as the `orderedKeys` array. Values that are not\n * present in `object` will be `undefined` in the resulting array.\n */\nexport function makeSequence(object, orderedKeys) {\n const length = orderedKeys.length;\n const sequence = new Array(length);\n for (let i = 0; i < length; ++i) {\n sequence[i] = object[orderedKeys[i]];\n }\n return sequence;\n}\n\n/**\n * Create a namespaced structure, using the same values for each namespace.\n * This can be used as a starting point for versioned parsers, when only a few\n * values are version specific.\n * @param {Array} namespaceURIs Namespace URIs.\n * @param {T} structure Structure.\n * @param {Object} [structureNS] Namespaced structure to add to.\n * @return {Object} Namespaced structure.\n * @template T\n */\nexport function makeStructureNS(namespaceURIs, structure, structureNS) {\n structureNS = structureNS !== undefined ? structureNS : {};\n let i, ii;\n for (i = 0, ii = namespaceURIs.length; i < ii; ++i) {\n structureNS[namespaceURIs[i]] = structure;\n }\n return structureNS;\n}\n\n/**\n * Parse a node using the parsers and object stack.\n * @param {Object>} parsersNS\n * Parsers by namespace.\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {*} [thisArg] The object to use as `this`.\n */\nexport function parseNode(parsersNS, node, objectStack, thisArg) {\n let n;\n for (n = node.firstElementChild; n; n = n.nextElementSibling) {\n const parsers = parsersNS[n.namespaceURI];\n if (parsers !== undefined) {\n const parser = parsers[n.localName];\n if (parser !== undefined) {\n parser.call(thisArg, n, objectStack);\n }\n }\n }\n}\n\n/**\n * Push an object on top of the stack, parse and return the popped object.\n * @param {T} object Object.\n * @param {Object>} parsersNS\n * Parsers by namespace.\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {*} [thisArg] The object to use as `this`.\n * @return {T} Object.\n * @template T\n */\nexport function pushParseAndPop(object, parsersNS, node, objectStack, thisArg) {\n objectStack.push(object);\n parseNode(parsersNS, node, objectStack, thisArg);\n return /** @type {T} */ (objectStack.pop());\n}\n\n/**\n * Walk through an array of `values` and call a serializer for each value.\n * @param {Object>} serializersNS\n * Namespaced serializers.\n * @param {function(this: T, *, Array<*>, (string|undefined)): (Node|undefined)} nodeFactory\n * Node factory. The `nodeFactory` creates the node whose namespace and name\n * will be used to choose a node writer from `serializersNS`. This\n * separation allows us to decide what kind of node to create, depending on\n * the value we want to serialize. An example for this would be different\n * geometry writers based on the geometry type.\n * @param {Array<*>} values Values to serialize. An example would be an array\n * of {@link module:ol/Feature~Feature} instances.\n * @param {Array<*>} objectStack Node stack.\n * @param {Array} [keys] Keys of the `values`. Will be passed to the\n * `nodeFactory`. This is used for serializing object literals where the\n * node name relates to the property key. The array length of `keys` has\n * to match the length of `values`. For serializing a sequence, `keys`\n * determines the order of the sequence.\n * @param {T} [thisArg] The object to use as `this` for the node factory and\n * serializers.\n * @template T\n */\nexport function serialize(\n serializersNS,\n nodeFactory,\n values,\n objectStack,\n keys,\n thisArg\n) {\n const length = (keys !== undefined ? keys : values).length;\n let value, node;\n for (let i = 0; i < length; ++i) {\n value = values[i];\n if (value !== undefined) {\n node = nodeFactory.call(\n thisArg !== undefined ? thisArg : this,\n value,\n objectStack,\n keys !== undefined ? keys[i] : undefined\n );\n if (node !== undefined) {\n serializersNS[node.namespaceURI][node.localName].call(\n thisArg,\n node,\n value,\n objectStack\n );\n }\n }\n }\n}\n\n/**\n * @param {O} object Object.\n * @param {Object>} serializersNS\n * Namespaced serializers.\n * @param {function(this: T, *, Array<*>, (string|undefined)): (Node|undefined)} nodeFactory\n * Node factory. The `nodeFactory` creates the node whose namespace and name\n * will be used to choose a node writer from `serializersNS`. This\n * separation allows us to decide what kind of node to create, depending on\n * the value we want to serialize. An example for this would be different\n * geometry writers based on the geometry type.\n * @param {Array<*>} values Values to serialize. An example would be an array\n * of {@link module:ol/Feature~Feature} instances.\n * @param {Array<*>} objectStack Node stack.\n * @param {Array} [keys] Keys of the `values`. Will be passed to the\n * `nodeFactory`. This is used for serializing object literals where the\n * node name relates to the property key. The array length of `keys` has\n * to match the length of `values`. For serializing a sequence, `keys`\n * determines the order of the sequence.\n * @param {T} [thisArg] The object to use as `this` for the node factory and\n * serializers.\n * @return {O|undefined} Object.\n * @template O, T\n */\nexport function pushSerializeAndPop(\n object,\n serializersNS,\n nodeFactory,\n values,\n objectStack,\n keys,\n thisArg\n) {\n objectStack.push(object);\n serialize(serializersNS, nodeFactory, values, objectStack, keys, thisArg);\n return /** @type {O|undefined} */ (objectStack.pop());\n}\n\nlet xmlSerializer_ = undefined;\n\n/**\n * Register a XMLSerializer. Can be used to inject a XMLSerializer\n * where there is no globally available implementation.\n *\n * @param {XMLSerializer} xmlSerializer A XMLSerializer.\n * @api\n */\nexport function registerXMLSerializer(xmlSerializer) {\n xmlSerializer_ = xmlSerializer;\n}\n\n/**\n * @return {XMLSerializer} The XMLSerializer.\n */\nexport function getXMLSerializer() {\n if (xmlSerializer_ === undefined && typeof XMLSerializer !== 'undefined') {\n xmlSerializer_ = new XMLSerializer();\n }\n return xmlSerializer_;\n}\n\nlet document_ = undefined;\n\n/**\n * Register a Document to use when creating nodes for XML serializations. Can be used\n * to inject a Document where there is no globally available implementation.\n *\n * @param {Document} document A Document.\n * @api\n */\nexport function registerDocument(document) {\n document_ = document;\n}\n\n/**\n * Get a document that should be used when creating nodes for XML serializations.\n * @return {Document} The document.\n */\nexport function getDocument() {\n if (document_ === undefined && typeof document !== 'undefined') {\n document_ = document.implementation.createDocument('', '', null);\n }\n return document_;\n}\n","/**\n * @module ol/format/XMLFeature\n */\nimport FeatureFormat from '../format/Feature.js';\nimport {abstract} from '../util.js';\nimport {extend} from '../array.js';\nimport {getXMLSerializer, isDocument, parse} from '../xml.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for XML feature formats.\n *\n * @abstract\n */\nclass XMLFeature extends FeatureFormat {\n constructor() {\n super();\n\n /**\n * @type {XMLSerializer}\n * @private\n */\n this.xmlSerializer_ = getXMLSerializer();\n }\n\n /**\n * @return {import(\"./Feature.js\").Type} Format.\n */\n getType() {\n return 'xml';\n }\n\n /**\n * Read a single feature.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n * @api\n */\n readFeature(source, options) {\n if (!source) {\n return null;\n }\n if (typeof source === 'string') {\n const doc = parse(source);\n return this.readFeatureFromDocument(doc, options);\n }\n if (isDocument(source)) {\n return this.readFeatureFromDocument(\n /** @type {Document} */ (source),\n options\n );\n }\n return this.readFeatureFromNode(/** @type {Element} */ (source), options);\n }\n\n /**\n * @param {Document} doc Document.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromDocument(doc, options) {\n const features = this.readFeaturesFromDocument(doc, options);\n if (features.length > 0) {\n return features[0];\n }\n return null;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromNode(node, options) {\n return null; // not implemented\n }\n\n /**\n * Read all features from a feature collection.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {Array} Features.\n * @api\n */\n readFeatures(source, options) {\n if (!source) {\n return [];\n }\n if (typeof source === 'string') {\n const doc = parse(source);\n return this.readFeaturesFromDocument(doc, options);\n }\n if (isDocument(source)) {\n return this.readFeaturesFromDocument(\n /** @type {Document} */ (source),\n options\n );\n }\n return this.readFeaturesFromNode(/** @type {Element} */ (source), options);\n }\n\n /**\n * @param {Document} doc Document.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromDocument(doc, options) {\n /** @type {Array} */\n const features = [];\n for (let n = doc.firstChild; n; n = n.nextSibling) {\n if (n.nodeType == Node.ELEMENT_NODE) {\n extend(\n features,\n this.readFeaturesFromNode(/** @type {Element} */ (n), options)\n );\n }\n }\n return features;\n }\n\n /**\n * @abstract\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromNode(node, options) {\n return abstract();\n }\n\n /**\n * Read a single geometry from a source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometry(source, options) {\n if (!source) {\n return null;\n }\n if (typeof source === 'string') {\n const doc = parse(source);\n return this.readGeometryFromDocument(doc, options);\n }\n if (isDocument(source)) {\n return this.readGeometryFromDocument(\n /** @type {Document} */ (source),\n options\n );\n }\n return this.readGeometryFromNode(/** @type {Element} */ (source), options);\n }\n\n /**\n * @param {Document} doc Document.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromDocument(doc, options) {\n return null; // not implemented\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromNode(node, options) {\n return null; // not implemented\n }\n\n /**\n * Read the projection from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n readProjection(source) {\n if (!source) {\n return null;\n }\n if (typeof source === 'string') {\n const doc = parse(source);\n return this.readProjectionFromDocument(doc);\n }\n if (isDocument(source)) {\n return this.readProjectionFromDocument(/** @type {Document} */ (source));\n }\n return this.readProjectionFromNode(/** @type {Element} */ (source));\n }\n\n /**\n * @param {Document} doc Document.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromDocument(doc) {\n return this.dataProjection;\n }\n\n /**\n * @param {Element} node Node.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromNode(node) {\n return this.dataProjection;\n }\n\n /**\n * Encode a feature as string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded feature.\n */\n writeFeature(feature, options) {\n const node = this.writeFeatureNode(feature, options);\n return this.xmlSerializer_.serializeToString(node);\n }\n\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @protected\n * @return {Node} Node.\n */\n writeFeatureNode(feature, options) {\n return null; // not implemented\n }\n\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Result.\n * @api\n */\n writeFeatures(features, options) {\n const node = this.writeFeaturesNode(features, options);\n return this.xmlSerializer_.serializeToString(node);\n }\n\n /**\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Node} Node.\n */\n writeFeaturesNode(features, options) {\n return null; // not implemented\n }\n\n /**\n * Encode a geometry as string.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded geometry.\n */\n writeGeometry(geometry, options) {\n const node = this.writeGeometryNode(geometry, options);\n return this.xmlSerializer_.serializeToString(node);\n }\n\n /**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Node} Node.\n */\n writeGeometryNode(geometry, options) {\n return null; // not implemented\n }\n}\n\nexport default XMLFeature;\n","/**\n * @module ol/format/GMLBase\n */\n// FIXME Envelopes should not be treated as geometries! readEnvelope_ is part\n// of GEOMETRY_PARSERS_ and methods using GEOMETRY_PARSERS_ do not expect\n// envelopes/extents, only geometries!\nimport Feature from '../Feature.js';\nimport Geometry from '../geom/Geometry.js';\nimport LineString from '../geom/LineString.js';\nimport LinearRing from '../geom/LinearRing.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport XMLFeature from './XMLFeature.js';\nimport {extend} from '../array.js';\nimport {\n getAllTextContent,\n getAttributeNS,\n makeArrayPusher,\n makeReplacer,\n parseNode,\n pushParseAndPop,\n} from '../xml.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n transformExtentWithOptions,\n transformGeometryWithOptions,\n} from './Feature.js';\n\n/**\n * @const\n * @type {string}\n */\nexport const GMLNS = 'http://www.opengis.net/gml';\n\n/**\n * A regular expression that matches if a string only contains whitespace\n * characters. It will e.g. match `''`, `' '`, `'\\n'` etc.\n *\n * @const\n * @type {RegExp}\n */\nconst ONLY_WHITESPACE_RE = /^\\s*$/;\n\n/**\n * @typedef {Object} Options\n * @property {Object|string} [featureNS] Feature\n * namespace. If not defined will be derived from GML. If multiple\n * feature types have been configured which come from different feature\n * namespaces, this will be an object with the keys being the prefixes used\n * in the entries of featureType array. The values of the object will be the\n * feature namespaces themselves. So for instance there might be a featureType\n * item `topp:states` in the `featureType` array and then there will be a key\n * `topp` in the featureNS object with value `http://www.openplans.org/topp`.\n * @property {Array|string} [featureType] Feature type(s) to parse.\n * If multiple feature types need to be configured\n * which come from different feature namespaces, `featureNS` will be an object\n * with the keys being the prefixes used in the entries of featureType array.\n * The values of the object will be the feature namespaces themselves.\n * So for instance there might be a featureType item `topp:states` and then\n * there will be a key named `topp` in the featureNS object with value\n * `http://www.openplans.org/topp`.\n * @property {string} [srsName] srsName to use when writing geometries.\n * @property {boolean} [surface=false] Write gml:Surface instead of gml:Polygon\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [curve=false] Write gml:Curve instead of gml:LineString\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [multiCurve=true] Write gml:MultiCurve instead of gml:MultiLineString.\n * Since the latter is deprecated in GML 3.\n * @property {boolean} [multiSurface=true] Write gml:multiSurface instead of\n * gml:MultiPolygon. Since the latter is deprecated in GML 3.\n * @property {string} [schemaLocation] Optional schemaLocation to use when\n * writing out the GML, this will override the default provided.\n * @property {boolean} [hasZ=false] If coordinates have a Z value.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Feature base format for reading and writing data in the GML format.\n * This class cannot be instantiated, it contains only base content that\n * is shared with versioned format classes GML2 and GML3.\n *\n * @abstract\n * @api\n */\nclass GMLBase extends XMLFeature {\n /**\n * @param {Options} [options] Optional configuration object.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @protected\n * @type {Array|string|undefined}\n */\n this.featureType = options.featureType;\n\n /**\n * @protected\n * @type {Object|string|undefined}\n */\n this.featureNS = options.featureNS;\n\n /**\n * @protected\n * @type {string|undefined}\n */\n this.srsName = options.srsName;\n\n /**\n * @protected\n * @type {string}\n */\n this.schemaLocation = '';\n\n /**\n * @type {Object>}\n */\n this.FEATURE_COLLECTION_PARSERS = {};\n this.FEATURE_COLLECTION_PARSERS[this.namespace] = {\n 'featureMember': makeArrayPusher(this.readFeaturesInternal),\n 'featureMembers': makeReplacer(this.readFeaturesInternal),\n };\n\n this.supportedMediaTypes = ['application/gml+xml'];\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array | undefined} Features.\n */\n readFeaturesInternal(node, objectStack) {\n const localName = node.localName;\n let features = null;\n if (localName == 'FeatureCollection') {\n features = pushParseAndPop(\n [],\n this.FEATURE_COLLECTION_PARSERS,\n node,\n objectStack,\n this\n );\n } else if (\n localName == 'featureMembers' ||\n localName == 'featureMember' ||\n localName == 'member'\n ) {\n const context = objectStack[0];\n let featureType = context['featureType'];\n let featureNS = context['featureNS'];\n const prefix = 'p';\n const defaultPrefix = 'p0';\n if (!featureType && node.childNodes) {\n (featureType = []), (featureNS = {});\n for (let i = 0, ii = node.childNodes.length; i < ii; ++i) {\n const child = /** @type {Element} */ (node.childNodes[i]);\n if (child.nodeType === 1) {\n const ft = child.nodeName.split(':').pop();\n if (!featureType.includes(ft)) {\n let key = '';\n let count = 0;\n const uri = child.namespaceURI;\n for (const candidate in featureNS) {\n if (featureNS[candidate] === uri) {\n key = candidate;\n break;\n }\n ++count;\n }\n if (!key) {\n key = prefix + count;\n featureNS[key] = uri;\n }\n featureType.push(key + ':' + ft);\n }\n }\n }\n if (localName != 'featureMember') {\n // recheck featureType for each featureMember\n context['featureType'] = featureType;\n context['featureNS'] = featureNS;\n }\n }\n if (typeof featureNS === 'string') {\n const ns = featureNS;\n featureNS = {};\n featureNS[defaultPrefix] = ns;\n }\n /** @type {Object>} */\n const parsersNS = {};\n const featureTypes = Array.isArray(featureType)\n ? featureType\n : [featureType];\n for (const p in featureNS) {\n /** @type {Object} */\n const parsers = {};\n for (let i = 0, ii = featureTypes.length; i < ii; ++i) {\n const featurePrefix = featureTypes[i].includes(':')\n ? featureTypes[i].split(':')[0]\n : defaultPrefix;\n if (featurePrefix === p) {\n parsers[featureTypes[i].split(':').pop()] =\n localName == 'featureMembers'\n ? makeArrayPusher(this.readFeatureElement, this)\n : makeReplacer(this.readFeatureElement, this);\n }\n }\n parsersNS[featureNS[p]] = parsers;\n }\n if (localName == 'featureMember' || localName == 'member') {\n features = pushParseAndPop(undefined, parsersNS, node, objectStack);\n } else {\n features = pushParseAndPop([], parsersNS, node, objectStack);\n }\n }\n if (features === null) {\n features = [];\n }\n return features;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent|undefined} Geometry.\n */\n readGeometryOrExtent(node, objectStack) {\n const context = /** @type {Object} */ (objectStack[0]);\n context['srsName'] = node.firstElementChild.getAttribute('srsName');\n context['srsDimension'] =\n node.firstElementChild.getAttribute('srsDimension');\n return pushParseAndPop(\n null,\n this.GEOMETRY_PARSERS,\n node,\n objectStack,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Geometry.\n */\n readExtentElement(node, objectStack) {\n const context = /** @type {Object} */ (objectStack[0]);\n const extent = /** @type {import(\"../extent.js\").Extent} */ (\n this.readGeometryOrExtent(node, objectStack)\n );\n return extent ? transformExtentWithOptions(extent, context) : undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../geom/Geometry.js\").default|undefined} Geometry.\n */\n readGeometryElement(node, objectStack) {\n const context = /** @type {Object} */ (objectStack[0]);\n const geometry = /** @type {import(\"../geom/Geometry.js\").default} */ (\n this.readGeometryOrExtent(node, objectStack)\n );\n return geometry\n ? transformGeometryWithOptions(geometry, false, context)\n : undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {boolean} asFeature whether result should be wrapped as a feature.\n * @return {Feature|Object} Feature\n */\n readFeatureElementInternal(node, objectStack, asFeature) {\n let geometryName;\n const values = {};\n for (let n = node.firstElementChild; n; n = n.nextElementSibling) {\n let value;\n const localName = n.localName;\n // first, check if it is simple attribute\n if (\n n.childNodes.length === 0 ||\n (n.childNodes.length === 1 &&\n (n.firstChild.nodeType === 3 || n.firstChild.nodeType === 4))\n ) {\n value = getAllTextContent(n, false);\n if (ONLY_WHITESPACE_RE.test(value)) {\n value = undefined;\n }\n } else {\n if (asFeature) {\n //if feature, try it as a geometry or extent\n value =\n localName === 'boundedBy'\n ? this.readExtentElement(n, objectStack)\n : this.readGeometryElement(n, objectStack);\n }\n if (!value) {\n //if not a geometry or not a feature, treat it as a complex attribute\n value = this.readFeatureElementInternal(n, objectStack, false);\n } else if (localName !== 'boundedBy') {\n // boundedBy is an extent and must not be considered as a geometry\n geometryName = localName;\n }\n }\n\n const len = n.attributes.length;\n if (len > 0 && !(value instanceof Geometry)) {\n value = {_content_: value};\n for (let i = 0; i < len; i++) {\n const attName = n.attributes[i].name;\n value[attName] = n.attributes[i].value;\n }\n }\n\n if (values[localName]) {\n if (!(values[localName] instanceof Array)) {\n values[localName] = [values[localName]];\n }\n values[localName].push(value);\n } else {\n values[localName] = value;\n }\n }\n if (!asFeature) {\n return values;\n }\n const feature = new Feature(values);\n if (geometryName) {\n feature.setGeometryName(geometryName);\n }\n const fid =\n node.getAttribute('fid') || getAttributeNS(node, this.namespace, 'id');\n if (fid) {\n feature.setId(fid);\n }\n return feature;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature} Feature.\n */\n readFeatureElement(node, objectStack) {\n return this.readFeatureElementInternal(node, objectStack, true);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Point|undefined} Point.\n */\n readPoint(node, objectStack) {\n const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n return new Point(flatCoordinates, 'XYZ');\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPoint|undefined} MultiPoint.\n */\n readMultiPoint(node, objectStack) {\n /** @type {Array>} */\n const coordinates = pushParseAndPop(\n [],\n this.MULTIPOINT_PARSERS,\n node,\n objectStack,\n this\n );\n if (coordinates) {\n return new MultiPoint(coordinates);\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiLineString|undefined} MultiLineString.\n */\n readMultiLineString(node, objectStack) {\n /** @type {Array} */\n const lineStrings = pushParseAndPop(\n [],\n this.MULTILINESTRING_PARSERS,\n node,\n objectStack,\n this\n );\n if (lineStrings) {\n return new MultiLineString(lineStrings);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPolygon|undefined} MultiPolygon.\n */\n readMultiPolygon(node, objectStack) {\n /** @type {Array} */\n const polygons = pushParseAndPop(\n [],\n this.MULTIPOLYGON_PARSERS,\n node,\n objectStack,\n this\n );\n if (polygons) {\n return new MultiPolygon(polygons);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n pointMemberParser(node, objectStack) {\n parseNode(this.POINTMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n lineStringMemberParser(node, objectStack) {\n parseNode(this.LINESTRINGMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n polygonMemberParser(node, objectStack) {\n parseNode(this.POLYGONMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LineString|undefined} LineString.\n */\n readLineString(node, objectStack) {\n const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n const lineString = new LineString(flatCoordinates, 'XYZ');\n return lineString;\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} LinearRing flat coordinates.\n */\n readFlatLinearRing(node, objectStack) {\n const ring = pushParseAndPop(\n null,\n this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n node,\n objectStack,\n this\n );\n if (ring) {\n return ring;\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LinearRing|undefined} LinearRing.\n */\n readLinearRing(node, objectStack) {\n const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n return new LinearRing(flatCoordinates, 'XYZ');\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Polygon|undefined} Polygon.\n */\n readPolygon(node, objectStack) {\n /** @type {Array>} */\n const flatLinearRings = pushParseAndPop(\n [null],\n this.FLAT_LINEAR_RINGS_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRings && flatLinearRings[0]) {\n const flatCoordinates = flatLinearRings[0];\n const ends = [flatCoordinates.length];\n let i, ii;\n for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {\n extend(flatCoordinates, flatLinearRings[i]);\n ends.push(flatCoordinates.length);\n }\n return new Polygon(flatCoordinates, 'XYZ', ends);\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array} Flat coordinates.\n */\n readFlatCoordinatesFromNode(node, objectStack) {\n return pushParseAndPop(\n null,\n this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n node,\n objectStack,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromNode(node, options) {\n const geometry = this.readGeometryElement(node, [\n this.getReadOptions(node, options ? options : {}),\n ]);\n return geometry ? geometry : null;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {Array} Features.\n */\n readFeaturesFromNode(node, options) {\n const internalOptions = {\n featureType: this.featureType,\n featureNS: this.featureNS,\n };\n if (internalOptions) {\n Object.assign(internalOptions, this.getReadOptions(node, options));\n }\n const features = this.readFeaturesInternal(node, [internalOptions]);\n return features || [];\n }\n\n /**\n * @param {Element} node Node.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromNode(node) {\n return getProjection(\n this.srsName\n ? this.srsName\n : node.firstElementChild.getAttribute('srsName')\n );\n }\n}\n\nGMLBase.prototype.namespace = GMLNS;\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTIPOINT_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n 'pointMembers': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTILINESTRING_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeArrayPusher(\n GMLBase.prototype.lineStringMemberParser\n ),\n 'lineStringMembers': makeArrayPusher(\n GMLBase.prototype.lineStringMemberParser\n ),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTIPOLYGON_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'polygonMember': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n 'polygonMembers': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.POINTMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeArrayPusher(GMLBase.prototype.readFlatCoordinatesFromNode),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.LINESTRINGMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.POLYGONMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.RING_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing),\n },\n};\n\nexport default GMLBase;\n","/**\n * @module ol/format/xsd\n */\nimport {getAllTextContent, getDocument} from '../xml.js';\nimport {padNumber} from '../string.js';\n\n/**\n * @param {Node} node Node.\n * @return {boolean|undefined} Boolean.\n */\nexport function readBoolean(node) {\n const s = getAllTextContent(node, false);\n return readBooleanString(s);\n}\n\n/**\n * @param {string} string String.\n * @return {boolean|undefined} Boolean.\n */\nexport function readBooleanString(string) {\n const m = /^\\s*(true|1)|(false|0)\\s*$/.exec(string);\n if (m) {\n return m[1] !== undefined || false;\n }\n return undefined;\n}\n\n/**\n * @param {Node} node Node.\n * @return {number|undefined} DateTime in seconds.\n */\nexport function readDateTime(node) {\n const s = getAllTextContent(node, false);\n const dateTime = Date.parse(s);\n return isNaN(dateTime) ? undefined : dateTime / 1000;\n}\n\n/**\n * @param {Node} node Node.\n * @return {number|undefined} Decimal.\n */\nexport function readDecimal(node) {\n const s = getAllTextContent(node, false);\n return readDecimalString(s);\n}\n\n/**\n * @param {string} string String.\n * @return {number|undefined} Decimal.\n */\nexport function readDecimalString(string) {\n // FIXME check spec\n const m = /^\\s*([+\\-]?\\d*\\.?\\d+(?:e[+\\-]?\\d+)?)\\s*$/i.exec(string);\n if (m) {\n return parseFloat(m[1]);\n }\n return undefined;\n}\n\n/**\n * @param {Node} node Node.\n * @return {number|undefined} Non negative integer.\n */\nexport function readPositiveInteger(node) {\n const s = getAllTextContent(node, false);\n return readNonNegativeIntegerString(s);\n}\n\n/**\n * @param {string} string String.\n * @return {number|undefined} Non negative integer.\n */\nexport function readNonNegativeIntegerString(string) {\n const m = /^\\s*(\\d+)\\s*$/.exec(string);\n if (m) {\n return parseInt(m[1], 10);\n }\n return undefined;\n}\n\n/**\n * @param {Node} node Node.\n * @return {string|undefined} String.\n */\nexport function readString(node) {\n return getAllTextContent(node, false).trim();\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the boolean to.\n * @param {boolean} bool Boolean.\n */\nexport function writeBooleanTextNode(node, bool) {\n writeStringTextNode(node, bool ? '1' : '0');\n}\n\n/**\n * @param {Node} node Node to append a CDATA Section with the string to.\n * @param {string} string String.\n */\nexport function writeCDATASection(node, string) {\n node.appendChild(getDocument().createCDATASection(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the dateTime to.\n * @param {number} dateTime DateTime in seconds.\n */\nexport function writeDateTimeTextNode(node, dateTime) {\n const date = new Date(dateTime * 1000);\n const string =\n date.getUTCFullYear() +\n '-' +\n padNumber(date.getUTCMonth() + 1, 2) +\n '-' +\n padNumber(date.getUTCDate(), 2) +\n 'T' +\n padNumber(date.getUTCHours(), 2) +\n ':' +\n padNumber(date.getUTCMinutes(), 2) +\n ':' +\n padNumber(date.getUTCSeconds(), 2) +\n 'Z';\n node.appendChild(getDocument().createTextNode(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the decimal to.\n * @param {number} decimal Decimal.\n */\nexport function writeDecimalTextNode(node, decimal) {\n const string = decimal.toPrecision();\n node.appendChild(getDocument().createTextNode(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the decimal to.\n * @param {number} nonNegativeInteger Non negative integer.\n */\nexport function writeNonNegativeIntegerTextNode(node, nonNegativeInteger) {\n const string = nonNegativeInteger.toString();\n node.appendChild(getDocument().createTextNode(string));\n}\n\n/**\n * @param {Node} node Node to append a TextNode with the string to.\n * @param {string} string String.\n */\nexport function writeStringTextNode(node, string) {\n node.appendChild(getDocument().createTextNode(string));\n}\n","/**\n * @module ol/format/GML2\n */\nimport GMLBase, {GMLNS} from './GMLBase.js';\nimport {\n OBJECT_PROPERTY_NODE_FACTORY,\n createElementNS,\n getAllTextContent,\n makeArrayPusher,\n makeChildAppender,\n makeReplacer,\n makeSimpleNodeFactory,\n pushParseAndPop,\n pushSerializeAndPop,\n} from '../xml.js';\nimport {createOrUpdate} from '../extent.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n transformExtentWithOptions,\n transformGeometryWithOptions,\n} from './Feature.js';\nimport {writeStringTextNode} from './xsd.js';\n\n/**\n * @const\n * @type {string}\n */\nconst schemaLocation =\n GMLNS + ' http://schemas.opengis.net/gml/2.1.2/feature.xsd';\n\n/**\n * @const\n * @type {Object}\n */\nconst MULTIGEOMETRY_TO_MEMBER_NODENAME = {\n 'MultiLineString': 'lineStringMember',\n 'MultiCurve': 'curveMember',\n 'MultiPolygon': 'polygonMember',\n 'MultiSurface': 'surfaceMember',\n};\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GML format,\n * version 2.1.2.\n *\n * @api\n */\nclass GML2 extends GMLBase {\n /**\n * @param {import(\"./GMLBase.js\").Options} [options] Optional configuration object.\n */\n constructor(options) {\n options = options ? options : {};\n\n super(options);\n\n this.FEATURE_COLLECTION_PARSERS[GMLNS]['featureMember'] = makeArrayPusher(\n this.readFeaturesInternal\n );\n\n /**\n * @type {string}\n */\n this.schemaLocation = options.schemaLocation\n ? options.schemaLocation\n : schemaLocation;\n }\n\n /**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Flat coordinates.\n */\n readFlatCoordinates(node, objectStack) {\n const s = getAllTextContent(node, false).replace(/^\\s*|\\s*$/g, '');\n const context = /** @type {import(\"../xml.js\").NodeStackItem} */ (\n objectStack[0]\n );\n const containerSrs = context['srsName'];\n let axisOrientation = 'enu';\n if (containerSrs) {\n const proj = getProjection(containerSrs);\n if (proj) {\n axisOrientation = proj.getAxisOrientation();\n }\n }\n const coordsGroups = s.trim().split(/\\s+/);\n const flatCoordinates = [];\n for (let i = 0, ii = coordsGroups.length; i < ii; i++) {\n const coords = coordsGroups[i].split(/,+/);\n const x = parseFloat(coords[0]);\n const y = parseFloat(coords[1]);\n const z = coords.length === 3 ? parseFloat(coords[2]) : 0;\n if (axisOrientation.substr(0, 2) === 'en') {\n flatCoordinates.push(x, y, z);\n } else {\n flatCoordinates.push(y, x, z);\n }\n }\n return flatCoordinates;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Envelope.\n */\n readBox(node, objectStack) {\n /** @type {Array} */\n const flatCoordinates = pushParseAndPop(\n [null],\n this.BOX_PARSERS_,\n node,\n objectStack,\n this\n );\n return createOrUpdate(\n flatCoordinates[1][0],\n flatCoordinates[1][1],\n flatCoordinates[1][3],\n flatCoordinates[1][4]\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n innerBoundaryIsParser(node, objectStack) {\n /** @type {Array|undefined} */\n const flatLinearRing = pushParseAndPop(\n undefined,\n this.RING_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRing) {\n const flatLinearRings =\n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings.push(flatLinearRing);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n outerBoundaryIsParser(node, objectStack) {\n /** @type {Array|undefined} */\n const flatLinearRing = pushParseAndPop(\n undefined,\n this.RING_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRing) {\n const flatLinearRings =\n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings[0] = flatLinearRing;\n }\n }\n\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Element|undefined} Node.\n * @private\n */\n GEOMETRY_NODE_FACTORY_(value, objectStack, nodeName) {\n const context = objectStack[objectStack.length - 1];\n const multiSurface = context['multiSurface'];\n const surface = context['surface'];\n const multiCurve = context['multiCurve'];\n if (!Array.isArray(value)) {\n nodeName = /** @type {import(\"../geom/Geometry.js\").default} */ (\n value\n ).getType();\n if (nodeName === 'MultiPolygon' && multiSurface === true) {\n nodeName = 'MultiSurface';\n } else if (nodeName === 'Polygon' && surface === true) {\n nodeName = 'Surface';\n } else if (nodeName === 'MultiLineString' && multiCurve === true) {\n nodeName = 'MultiCurve';\n }\n } else {\n nodeName = 'Envelope';\n }\n return createElementNS('http://www.opengis.net/gml', nodeName);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\n writeFeatureElement(node, feature, objectStack) {\n const fid = feature.getId();\n if (fid) {\n node.setAttribute('fid', /** @type {string} */ (fid));\n }\n const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n const featureNS = context['featureNS'];\n const geometryName = feature.getGeometryName();\n if (!context.serializers) {\n context.serializers = {};\n context.serializers[featureNS] = {};\n }\n const keys = [];\n const values = [];\n if (feature.hasProperties()) {\n const properties = feature.getProperties();\n for (const key in properties) {\n const value = properties[key];\n if (value !== null) {\n keys.push(key);\n values.push(value);\n if (\n key == geometryName ||\n typeof (/** @type {?} */ (value).getSimplifiedGeometry) ===\n 'function'\n ) {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] = makeChildAppender(\n this.writeGeometryElement,\n this\n );\n }\n } else {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] =\n makeChildAppender(writeStringTextNode);\n }\n }\n }\n }\n }\n const item = Object.assign({}, context);\n item.node = node;\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item),\n context.serializers,\n makeSimpleNodeFactory(undefined, featureNS),\n values,\n objectStack,\n keys\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} geometry LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeCurveOrLineString(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (node.nodeName !== 'LineStringSegment' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (\n node.nodeName === 'LineString' ||\n node.nodeName === 'LineStringSegment'\n ) {\n const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n this.writeCoordinates_(coordinates, geometry, objectStack);\n } else if (node.nodeName === 'Curve') {\n const segments = createElementNS(node.namespaceURI, 'segments');\n node.appendChild(segments);\n this.writeCurveSegments_(segments, geometry, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeLineStringOrCurveMember(node, line, objectStack) {\n const child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiLineString.js\").default} geometry MultiLineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiCurveOrLineString(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n const curve = context['curve'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const lines = geometry.getLineStrings();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName, curve: curve},\n this.LINESTRINGORCURVEMEMBER_SERIALIZERS,\n this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n lines,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeGeometryElement(node, geometry, objectStack) {\n const context = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[objectStack.length - 1]\n );\n const item = Object.assign({}, context);\n item['node'] = node;\n let value;\n if (Array.isArray(geometry)) {\n value = transformExtentWithOptions(\n /** @type {import(\"../extent.js\").Extent} */ (geometry),\n context\n );\n } else {\n value = transformGeometryWithOptions(\n /** @type {import(\"../geom/Geometry.js\").default} */ (geometry),\n true,\n context\n );\n }\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item),\n this.GEOMETRY_SERIALIZERS,\n this.GEOMETRY_NODE_FACTORY_,\n [value],\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {string} namespaceURI XML namespace.\n * @return {Element} coordinates node.\n * @private\n */\n createCoordinatesNode_(namespaceURI) {\n const coordinates = createElementNS(namespaceURI, 'coordinates');\n coordinates.setAttribute('decimal', '.');\n coordinates.setAttribute('cs', ',');\n coordinates.setAttribute('ts', ' ');\n\n return coordinates;\n }\n\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/LineString.js\").default|import(\"../geom/LinearRing.js\").default} value Geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeCoordinates_(node, value, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n // only 2d for simple features profile\n const points = value.getCoordinates();\n const len = points.length;\n const parts = new Array(len);\n for (let i = 0; i < len; ++i) {\n const point = points[i];\n parts[i] = this.getCoords_(point, srsName, hasZ);\n }\n writeStringTextNode(node, parts.join(' '));\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeCurveSegments_(node, line, objectStack) {\n const child = createElementNS(node.namespaceURI, 'LineStringSegment');\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Polygon.js\").default} geometry Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeSurfaceOrPolygon(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n if (node.nodeName !== 'PolygonPatch' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {\n const rings = geometry.getLinearRings();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName},\n this.RING_SERIALIZERS,\n this.RING_NODE_FACTORY_,\n rings,\n objectStack,\n undefined,\n this\n );\n } else if (node.nodeName === 'Surface') {\n const patches = createElementNS(node.namespaceURI, 'patches');\n node.appendChild(patches);\n this.writeSurfacePatches_(patches, geometry, objectStack);\n }\n }\n\n /**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node} Node.\n * @private\n */\n RING_NODE_FACTORY_(value, objectStack, nodeName) {\n const context = objectStack[objectStack.length - 1];\n const parentNode = context.node;\n const exteriorWritten = context['exteriorWritten'];\n if (exteriorWritten === undefined) {\n context['exteriorWritten'] = true;\n }\n return createElementNS(\n parentNode.namespaceURI,\n exteriorWritten !== undefined ? 'innerBoundaryIs' : 'outerBoundaryIs'\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeSurfacePatches_(node, polygon, objectStack) {\n const child = createElementNS(node.namespaceURI, 'PolygonPatch');\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} ring LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeRing(node, ring, objectStack) {\n const linearRing = createElementNS(node.namespaceURI, 'LinearRing');\n node.appendChild(linearRing);\n this.writeLinearRing(linearRing, ring, objectStack);\n }\n\n /**\n * @param {Array} point Point geometry.\n * @param {string} [srsName] Optional srsName\n * @param {boolean} [hasZ] whether the geometry has a Z coordinate (is 3D) or not.\n * @return {string} The coords string.\n * @private\n */\n getCoords_(point, srsName, hasZ) {\n let axisOrientation = 'enu';\n if (srsName) {\n axisOrientation = getProjection(srsName).getAxisOrientation();\n }\n let coords =\n axisOrientation.substr(0, 2) === 'en'\n ? point[0] + ',' + point[1]\n : point[1] + ',' + point[0];\n if (hasZ) {\n // For newly created points, Z can be undefined.\n const z = point[2] || 0;\n coords += ',' + z;\n }\n\n return coords;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} geometry Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writePoint(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n const point = geometry.getCoordinates();\n const coord = this.getCoords_(point, srsName, hasZ);\n writeStringTextNode(coordinates, coord);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPoint.js\").default} geometry MultiPoint geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiPoint(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const points = geometry.getPoints();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName},\n this.POINTMEMBER_SERIALIZERS,\n makeSimpleNodeFactory('pointMember'),\n points,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} point Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writePointMember(node, point, objectStack) {\n const child = createElementNS(node.namespaceURI, 'Point');\n node.appendChild(child);\n this.writePoint(child, point, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} geometry LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeLinearRing(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n this.writeCoordinates_(coordinates, geometry, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiSurfaceOrPolygon(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n const surface = context['surface'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const polygons = geometry.getPolygons();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName, surface: surface},\n this.SURFACEORPOLYGONMEMBER_SERIALIZERS,\n this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n polygons,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeSurfaceOrPolygonMember(node, polygon, objectStack) {\n const child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {Array<*>} objectStack Node stack.\n */\n writeEnvelope(node, extent, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const keys = ['lowerCorner', 'upperCorner'];\n const values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({node: node}),\n this.ENVELOPE_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n keys,\n this\n );\n }\n\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node|undefined} Node.\n * @private\n */\n MULTIGEOMETRY_MEMBER_NODE_FACTORY_(value, objectStack, nodeName) {\n const parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS(\n 'http://www.opengis.net/gml',\n MULTIGEOMETRY_TO_MEMBER_NODENAME[parentNode.nodeName]\n );\n }\n}\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'innerBoundaryIs': GML2.prototype.innerBoundaryIsParser,\n 'outerBoundaryIs': GML2.prototype.outerBoundaryIsParser,\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.BOX_PARSERS_ = {\n 'http://www.opengis.net/gml': {\n 'coordinates': makeArrayPusher(GML2.prototype.readFlatCoordinates),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeReplacer(GMLBase.prototype.readPoint),\n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n 'LineString': makeReplacer(GMLBase.prototype.readLineString),\n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n 'Box': makeReplacer(GML2.prototype.readBox),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'Curve': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n 'MultiCurve': makeChildAppender(GML2.prototype.writeMultiCurveOrLineString),\n 'Point': makeChildAppender(GML2.prototype.writePoint),\n 'MultiPoint': makeChildAppender(GML2.prototype.writeMultiPoint),\n 'LineString': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n 'MultiLineString': makeChildAppender(\n GML2.prototype.writeMultiCurveOrLineString\n ),\n 'LinearRing': makeChildAppender(GML2.prototype.writeLinearRing),\n 'Polygon': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n 'MultiPolygon': makeChildAppender(\n GML2.prototype.writeMultiSurfaceOrPolygon\n ),\n 'Surface': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n 'MultiSurface': makeChildAppender(\n GML2.prototype.writeMultiSurfaceOrPolygon\n ),\n 'Envelope': makeChildAppender(GML2.prototype.writeEnvelope),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeChildAppender(\n GML2.prototype.writeLineStringOrCurveMember\n ),\n 'curveMember': makeChildAppender(\n GML2.prototype.writeLineStringOrCurveMember\n ),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.RING_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'outerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n 'innerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.POINTMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeChildAppender(GML2.prototype.writePointMember),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'surfaceMember': makeChildAppender(\n GML2.prototype.writeSurfaceOrPolygonMember\n ),\n 'polygonMember': makeChildAppender(\n GML2.prototype.writeSurfaceOrPolygonMember\n ),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.ENVELOPE_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lowerCorner': makeChildAppender(writeStringTextNode),\n 'upperCorner': makeChildAppender(writeStringTextNode),\n },\n};\n\nexport default GML2;\n","/**\n * @module ol/format/GML3\n */\nimport GML2 from './GML2.js';\nimport GMLBase, {GMLNS} from './GMLBase.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Polygon from '../geom/Polygon.js';\nimport {\n OBJECT_PROPERTY_NODE_FACTORY,\n XML_SCHEMA_INSTANCE_URI,\n createElementNS,\n getAllTextContent,\n makeArrayExtender,\n makeArrayPusher,\n makeChildAppender,\n makeReplacer,\n makeSimpleNodeFactory,\n parseNode,\n pushParseAndPop,\n pushSerializeAndPop,\n} from '../xml.js';\nimport {createOrUpdate} from '../extent.js';\nimport {extend} from '../array.js';\nimport {get as getProjection} from '../proj.js';\nimport {readNonNegativeIntegerString, writeStringTextNode} from './xsd.js';\nimport {\n transformExtentWithOptions,\n transformGeometryWithOptions,\n} from './Feature.js';\n\n/**\n * @const\n * @type {string}\n * @private\n */\nconst schemaLocation =\n GMLNS +\n ' http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/' +\n '1.0.0/gmlsf.xsd';\n\n/**\n * @const\n * @type {Object}\n */\nconst MULTIGEOMETRY_TO_MEMBER_NODENAME = {\n 'MultiLineString': 'lineStringMember',\n 'MultiCurve': 'curveMember',\n 'MultiPolygon': 'polygonMember',\n 'MultiSurface': 'surfaceMember',\n};\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GML format\n * version 3.1.1.\n * Currently only supports GML 3.1.1 Simple Features profile.\n *\n * @api\n */\nclass GML3 extends GMLBase {\n /**\n * @param {import(\"./GMLBase.js\").Options} [options] Optional configuration object.\n */\n constructor(options) {\n options = options ? options : {};\n\n super(options);\n\n /**\n * @private\n * @type {boolean}\n */\n this.surface_ = options.surface !== undefined ? options.surface : false;\n\n /**\n * @private\n * @type {boolean}\n */\n this.curve_ = options.curve !== undefined ? options.curve : false;\n\n /**\n * @private\n * @type {boolean}\n */\n this.multiCurve_ =\n options.multiCurve !== undefined ? options.multiCurve : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.multiSurface_ =\n options.multiSurface !== undefined ? options.multiSurface : true;\n\n /**\n * @type {string}\n */\n this.schemaLocation = options.schemaLocation\n ? options.schemaLocation\n : schemaLocation;\n\n /**\n * @private\n * @type {boolean}\n */\n this.hasZ = options.hasZ !== undefined ? options.hasZ : false;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiLineString|undefined} MultiLineString.\n */\n readMultiCurve(node, objectStack) {\n /** @type {Array} */\n const lineStrings = pushParseAndPop(\n [],\n this.MULTICURVE_PARSERS,\n node,\n objectStack,\n this\n );\n if (lineStrings) {\n const multiLineString = new MultiLineString(lineStrings);\n return multiLineString;\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Polygon.\n */\n readFlatCurveRing(node, objectStack) {\n /** @type {Array} */\n const lineStrings = pushParseAndPop(\n [],\n this.MULTICURVE_PARSERS,\n node,\n objectStack,\n this\n );\n const flatCoordinates = [];\n for (let i = 0, ii = lineStrings.length; i < ii; ++i) {\n extend(flatCoordinates, lineStrings[i].getFlatCoordinates());\n }\n return flatCoordinates;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPolygon|undefined} MultiPolygon.\n */\n readMultiSurface(node, objectStack) {\n /** @type {Array} */\n const polygons = pushParseAndPop(\n [],\n this.MULTISURFACE_PARSERS,\n node,\n objectStack,\n this\n );\n if (polygons) {\n return new MultiPolygon(polygons);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n curveMemberParser(node, objectStack) {\n parseNode(this.CURVEMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n surfaceMemberParser(node, objectStack) {\n parseNode(this.SURFACEMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array<(Array)>|undefined} flat coordinates.\n */\n readPatch(node, objectStack) {\n return pushParseAndPop(\n [null],\n this.PATCHES_PARSERS,\n node,\n objectStack,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} flat coordinates.\n */\n readSegment(node, objectStack) {\n return pushParseAndPop([], this.SEGMENTS_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array<(Array)>|undefined} flat coordinates.\n */\n readPolygonPatch(node, objectStack) {\n return pushParseAndPop(\n [null],\n this.FLAT_LINEAR_RINGS_PARSERS,\n node,\n objectStack,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} flat coordinates.\n */\n readLineStringSegment(node, objectStack) {\n return pushParseAndPop(\n [null],\n this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n node,\n objectStack,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n interiorParser(node, objectStack) {\n /** @type {Array|undefined} */\n const flatLinearRing = pushParseAndPop(\n undefined,\n this.RING_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRing) {\n const flatLinearRings =\n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings.push(flatLinearRing);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n exteriorParser(node, objectStack) {\n /** @type {Array|undefined} */\n const flatLinearRing = pushParseAndPop(\n undefined,\n this.RING_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRing) {\n const flatLinearRings =\n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings[0] = flatLinearRing;\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Polygon|undefined} Polygon.\n */\n readSurface(node, objectStack) {\n /** @type {Array>} */\n const flatLinearRings = pushParseAndPop(\n [null],\n this.SURFACE_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRings && flatLinearRings[0]) {\n const flatCoordinates = flatLinearRings[0];\n const ends = [flatCoordinates.length];\n let i, ii;\n for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {\n extend(flatCoordinates, flatLinearRings[i]);\n ends.push(flatCoordinates.length);\n }\n return new Polygon(flatCoordinates, 'XYZ', ends);\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LineString|undefined} LineString.\n */\n readCurve(node, objectStack) {\n /** @type {Array} */\n const flatCoordinates = pushParseAndPop(\n [null],\n this.CURVE_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatCoordinates) {\n const lineString = new LineString(flatCoordinates, 'XYZ');\n return lineString;\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Envelope.\n */\n readEnvelope(node, objectStack) {\n /** @type {Array} */\n const flatCoordinates = pushParseAndPop(\n [null],\n this.ENVELOPE_PARSERS,\n node,\n objectStack,\n this\n );\n return createOrUpdate(\n flatCoordinates[1][0],\n flatCoordinates[1][1],\n flatCoordinates[2][0],\n flatCoordinates[2][1]\n );\n }\n\n /**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Flat coordinates.\n */\n readFlatPos(node, objectStack) {\n let s = getAllTextContent(node, false);\n const re = /^\\s*([+\\-]?\\d*\\.?\\d+(?:[eE][+\\-]?\\d+)?)\\s*/;\n /** @type {Array} */\n const flatCoordinates = [];\n let m;\n while ((m = re.exec(s))) {\n flatCoordinates.push(parseFloat(m[1]));\n s = s.substr(m[0].length);\n }\n if (s !== '') {\n return undefined;\n }\n const context = objectStack[0];\n const containerSrs = context['srsName'];\n let axisOrientation = 'enu';\n if (containerSrs) {\n const proj = getProjection(containerSrs);\n axisOrientation = proj.getAxisOrientation();\n }\n if (axisOrientation === 'neu') {\n let i, ii;\n for (i = 0, ii = flatCoordinates.length; i < ii; i += 3) {\n const y = flatCoordinates[i];\n const x = flatCoordinates[i + 1];\n flatCoordinates[i] = x;\n flatCoordinates[i + 1] = y;\n }\n }\n const len = flatCoordinates.length;\n if (len == 2) {\n flatCoordinates.push(0);\n }\n if (len === 0) {\n return undefined;\n }\n return flatCoordinates;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Flat coordinates.\n */\n readFlatPosList(node, objectStack) {\n const s = getAllTextContent(node, false).replace(/^\\s*|\\s*$/g, '');\n const context = objectStack[0];\n const containerSrs = context['srsName'];\n const contextDimension = context['srsDimension'];\n let axisOrientation = 'enu';\n if (containerSrs) {\n const proj = getProjection(containerSrs);\n axisOrientation = proj.getAxisOrientation();\n }\n const coords = s.split(/\\s+/);\n // The \"dimension\" attribute is from the GML 3.0.1 spec.\n let dim = 2;\n if (node.getAttribute('srsDimension')) {\n dim = readNonNegativeIntegerString(node.getAttribute('srsDimension'));\n } else if (node.getAttribute('dimension')) {\n dim = readNonNegativeIntegerString(node.getAttribute('dimension'));\n } else if (\n /** @type {Element} */ (node.parentNode).getAttribute('srsDimension')\n ) {\n dim = readNonNegativeIntegerString(\n /** @type {Element} */ (node.parentNode).getAttribute('srsDimension')\n );\n } else if (contextDimension) {\n dim = readNonNegativeIntegerString(contextDimension);\n }\n let x, y, z;\n const flatCoordinates = [];\n for (let i = 0, ii = coords.length; i < ii; i += dim) {\n x = parseFloat(coords[i]);\n y = parseFloat(coords[i + 1]);\n z = dim === 3 ? parseFloat(coords[i + 2]) : 0;\n if (axisOrientation.substr(0, 2) === 'en') {\n flatCoordinates.push(x, y, z);\n } else {\n flatCoordinates.push(y, x, z);\n }\n }\n return flatCoordinates;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} value Point geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writePos_(node, value, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsDimension = hasZ ? '3' : '2';\n node.setAttribute('srsDimension', srsDimension);\n const srsName = context['srsName'];\n let axisOrientation = 'enu';\n if (srsName) {\n axisOrientation = getProjection(srsName).getAxisOrientation();\n }\n const point = value.getCoordinates();\n let coords;\n // only 2d for simple features profile\n if (axisOrientation.substr(0, 2) === 'en') {\n coords = point[0] + ' ' + point[1];\n } else {\n coords = point[1] + ' ' + point[0];\n }\n if (hasZ) {\n // For newly created points, Z can be undefined.\n const z = point[2] || 0;\n coords += ' ' + z;\n }\n writeStringTextNode(node, coords);\n }\n\n /**\n * @param {Array} point Point geometry.\n * @param {string} [srsName] Optional srsName\n * @param {boolean} [hasZ] whether the geometry has a Z coordinate (is 3D) or not.\n * @return {string} The coords string.\n * @private\n */\n getCoords_(point, srsName, hasZ) {\n let axisOrientation = 'enu';\n if (srsName) {\n axisOrientation = getProjection(srsName).getAxisOrientation();\n }\n let coords =\n axisOrientation.substr(0, 2) === 'en'\n ? point[0] + ' ' + point[1]\n : point[1] + ' ' + point[0];\n if (hasZ) {\n // For newly created points, Z can be undefined.\n const z = point[2] || 0;\n coords += ' ' + z;\n }\n\n return coords;\n }\n\n /**\n * @param {Element} node Node.\n * @param {LineString|import(\"../geom/LinearRing.js\").default} value Geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writePosList_(node, value, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsDimension = hasZ ? '3' : '2';\n node.setAttribute('srsDimension', srsDimension);\n const srsName = context['srsName'];\n // only 2d for simple features profile\n const points = value.getCoordinates();\n const len = points.length;\n const parts = new Array(len);\n let point;\n for (let i = 0; i < len; ++i) {\n point = points[i];\n parts[i] = this.getCoords_(point, srsName, hasZ);\n }\n writeStringTextNode(node, parts.join(' '));\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} geometry Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writePoint(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const pos = createElementNS(node.namespaceURI, 'pos');\n node.appendChild(pos);\n this.writePos_(pos, geometry, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {Array<*>} objectStack Node stack.\n */\n writeEnvelope(node, extent, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const keys = ['lowerCorner', 'upperCorner'];\n const values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({node: node}),\n this.ENVELOPE_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n keys,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} geometry LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeLinearRing(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const posList = createElementNS(node.namespaceURI, 'posList');\n node.appendChild(posList);\n this.writePosList_(posList, geometry, objectStack);\n }\n\n /**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node} Node.\n * @private\n */\n RING_NODE_FACTORY_(value, objectStack, nodeName) {\n const context = objectStack[objectStack.length - 1];\n const parentNode = context.node;\n const exteriorWritten = context['exteriorWritten'];\n if (exteriorWritten === undefined) {\n context['exteriorWritten'] = true;\n }\n return createElementNS(\n parentNode.namespaceURI,\n exteriorWritten !== undefined ? 'interior' : 'exterior'\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Polygon} geometry Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeSurfaceOrPolygon(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n if (node.nodeName !== 'PolygonPatch' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {\n const rings = geometry.getLinearRings();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName},\n this.RING_SERIALIZERS,\n this.RING_NODE_FACTORY_,\n rings,\n objectStack,\n undefined,\n this\n );\n } else if (node.nodeName === 'Surface') {\n const patches = createElementNS(node.namespaceURI, 'patches');\n node.appendChild(patches);\n this.writeSurfacePatches_(patches, geometry, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {LineString} geometry LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeCurveOrLineString(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (node.nodeName !== 'LineStringSegment' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (\n node.nodeName === 'LineString' ||\n node.nodeName === 'LineStringSegment'\n ) {\n const posList = createElementNS(node.namespaceURI, 'posList');\n node.appendChild(posList);\n this.writePosList_(posList, geometry, objectStack);\n } else if (node.nodeName === 'Curve') {\n const segments = createElementNS(node.namespaceURI, 'segments');\n node.appendChild(segments);\n this.writeCurveSegments_(segments, geometry, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {MultiPolygon} geometry MultiPolygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiSurfaceOrPolygon(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n const surface = context['surface'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const polygons = geometry.getPolygons();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName, surface: surface},\n this.SURFACEORPOLYGONMEMBER_SERIALIZERS,\n this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n polygons,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPoint.js\").default} geometry MultiPoint geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiPoint(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n const hasZ = context['hasZ'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const points = geometry.getPoints();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName},\n this.POINTMEMBER_SERIALIZERS,\n makeSimpleNodeFactory('pointMember'),\n points,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {MultiLineString} geometry MultiLineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiCurveOrLineString(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n const curve = context['curve'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const lines = geometry.getLineStrings();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName, curve: curve},\n this.LINESTRINGORCURVEMEMBER_SERIALIZERS,\n this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n lines,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} ring LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeRing(node, ring, objectStack) {\n const linearRing = createElementNS(node.namespaceURI, 'LinearRing');\n node.appendChild(linearRing);\n this.writeLinearRing(linearRing, ring, objectStack);\n }\n\n /**\n * @param {Node} node Node.\n * @param {Polygon} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeSurfaceOrPolygonMember(node, polygon, objectStack) {\n const child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} point Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writePointMember(node, point, objectStack) {\n const child = createElementNS(node.namespaceURI, 'Point');\n node.appendChild(child);\n this.writePoint(child, point, objectStack);\n }\n\n /**\n * @param {Node} node Node.\n * @param {LineString} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeLineStringOrCurveMember(node, line, objectStack) {\n const child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Polygon} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeSurfacePatches_(node, polygon, objectStack) {\n const child = createElementNS(node.namespaceURI, 'PolygonPatch');\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {LineString} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeCurveSegments_(node, line, objectStack) {\n const child = createElementNS(node.namespaceURI, 'LineStringSegment');\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeGeometryElement(node, geometry, objectStack) {\n const context = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[objectStack.length - 1]\n );\n const item = Object.assign({}, context);\n item['node'] = node;\n let value;\n if (Array.isArray(geometry)) {\n value = transformExtentWithOptions(\n /** @type {import(\"../extent.js\").Extent} */ (geometry),\n context\n );\n } else {\n value = transformGeometryWithOptions(\n /** @type {import(\"../geom/Geometry.js\").default} */ (geometry),\n true,\n context\n );\n }\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item),\n this.GEOMETRY_SERIALIZERS,\n this.GEOMETRY_NODE_FACTORY_,\n [value],\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\n writeFeatureElement(node, feature, objectStack) {\n const fid = feature.getId();\n if (fid) {\n node.setAttribute('fid', /** @type {string} */ (fid));\n }\n const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n const featureNS = context['featureNS'];\n const geometryName = feature.getGeometryName();\n if (!context.serializers) {\n context.serializers = {};\n context.serializers[featureNS] = {};\n }\n const keys = [];\n const values = [];\n if (feature.hasProperties()) {\n const properties = feature.getProperties();\n for (const key in properties) {\n const value = properties[key];\n if (value !== null) {\n keys.push(key);\n values.push(value);\n if (\n key == geometryName ||\n typeof (/** @type {?} */ (value).getSimplifiedGeometry) ===\n 'function'\n ) {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] = makeChildAppender(\n this.writeGeometryElement,\n this\n );\n }\n } else {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] =\n makeChildAppender(writeStringTextNode);\n }\n }\n }\n }\n }\n const item = Object.assign({}, context);\n item.node = node;\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item),\n context.serializers,\n makeSimpleNodeFactory(undefined, featureNS),\n values,\n objectStack,\n keys\n );\n }\n\n /**\n * @param {Node} node Node.\n * @param {Array} features Features.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeFeatureMembers_(node, features, objectStack) {\n const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n const featureType = context['featureType'];\n const featureNS = context['featureNS'];\n /** @type {Object>} */\n const serializers = {};\n serializers[featureNS] = {};\n serializers[featureNS][featureType] = makeChildAppender(\n this.writeFeatureElement,\n this\n );\n const item = Object.assign({}, context);\n item.node = node;\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item),\n serializers,\n makeSimpleNodeFactory(featureType, featureNS),\n features,\n objectStack\n );\n }\n\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node|undefined} Node.\n * @private\n */\n MULTIGEOMETRY_MEMBER_NODE_FACTORY_(value, objectStack, nodeName) {\n const parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS(\n this.namespace,\n MULTIGEOMETRY_TO_MEMBER_NODENAME[parentNode.nodeName]\n );\n }\n\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Element|undefined} Node.\n * @private\n */\n GEOMETRY_NODE_FACTORY_(value, objectStack, nodeName) {\n const context = objectStack[objectStack.length - 1];\n const multiSurface = context['multiSurface'];\n const surface = context['surface'];\n const curve = context['curve'];\n const multiCurve = context['multiCurve'];\n if (!Array.isArray(value)) {\n nodeName = /** @type {import(\"../geom/Geometry.js\").default} */ (\n value\n ).getType();\n if (nodeName === 'MultiPolygon' && multiSurface === true) {\n nodeName = 'MultiSurface';\n } else if (nodeName === 'Polygon' && surface === true) {\n nodeName = 'Surface';\n } else if (nodeName === 'LineString' && curve === true) {\n nodeName = 'Curve';\n } else if (nodeName === 'MultiLineString' && multiCurve === true) {\n nodeName = 'MultiCurve';\n }\n } else {\n nodeName = 'Envelope';\n }\n return createElementNS(this.namespace, nodeName);\n }\n\n /**\n * Encode a geometry in GML 3.1.1 Simple Features.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Node} Node.\n * @api\n */\n writeGeometryNode(geometry, options) {\n options = this.adaptOptions(options);\n const geom = createElementNS(this.namespace, 'geom');\n const context = {\n node: geom,\n hasZ: this.hasZ,\n srsName: this.srsName,\n curve: this.curve_,\n surface: this.surface_,\n multiSurface: this.multiSurface_,\n multiCurve: this.multiCurve_,\n };\n if (options) {\n Object.assign(context, options);\n }\n this.writeGeometryElement(geom, geometry, [context]);\n return geom;\n }\n\n /**\n * Encode an array of features in the GML 3.1.1 format as an XML node.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Element} Node.\n * @api\n */\n writeFeaturesNode(features, options) {\n options = this.adaptOptions(options);\n const node = createElementNS(this.namespace, 'featureMembers');\n node.setAttributeNS(\n XML_SCHEMA_INSTANCE_URI,\n 'xsi:schemaLocation',\n this.schemaLocation\n );\n const context = {\n srsName: this.srsName,\n hasZ: this.hasZ,\n curve: this.curve_,\n surface: this.surface_,\n multiSurface: this.multiSurface_,\n multiCurve: this.multiCurve_,\n featureNS: this.featureNS,\n featureType: this.featureType,\n };\n if (options) {\n Object.assign(context, options);\n }\n this.writeFeatureMembers_(node, features, [context]);\n return node;\n }\n}\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'pos': makeReplacer(GML3.prototype.readFlatPos),\n 'posList': makeReplacer(GML3.prototype.readFlatPosList),\n 'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'interior': GML3.prototype.interiorParser,\n 'exterior': GML3.prototype.exteriorParser,\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeReplacer(GMLBase.prototype.readPoint),\n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n 'LineString': makeReplacer(GMLBase.prototype.readLineString),\n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n 'Surface': makeReplacer(GML3.prototype.readSurface),\n 'MultiSurface': makeReplacer(GML3.prototype.readMultiSurface),\n 'Curve': makeReplacer(GML3.prototype.readCurve),\n 'MultiCurve': makeReplacer(GML3.prototype.readMultiCurve),\n 'Envelope': makeReplacer(GML3.prototype.readEnvelope),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.MULTICURVE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'curveMember': makeArrayPusher(GML3.prototype.curveMemberParser),\n 'curveMembers': makeArrayPusher(GML3.prototype.curveMemberParser),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.MULTISURFACE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'surfaceMember': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n 'surfaceMembers': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.CURVEMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n 'Curve': makeArrayPusher(GML3.prototype.readCurve),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.SURFACEMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n 'Surface': makeArrayPusher(GML3.prototype.readSurface),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.SURFACE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'patches': makeReplacer(GML3.prototype.readPatch),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.CURVE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'segments': makeReplacer(GML3.prototype.readSegment),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.ENVELOPE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'lowerCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n 'upperCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.PATCHES_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'PolygonPatch': makeReplacer(GML3.prototype.readPolygonPatch),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.SEGMENTS_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LineStringSegment': makeArrayExtender(\n GML3.prototype.readLineStringSegment\n ),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.RING_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing),\n 'Ring': makeReplacer(GML3.prototype.readFlatCurveRing),\n },\n};\n\n/**\n * Encode an array of features in GML 3.1.1 Simple Features.\n *\n * @function\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {string} Result.\n * @api\n */\nGML3.prototype.writeFeatures;\n\n/**\n * @type {Object>}\n */\nGML3.prototype.RING_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'exterior': makeChildAppender(GML3.prototype.writeRing),\n 'interior': makeChildAppender(GML3.prototype.writeRing),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML3.prototype.ENVELOPE_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lowerCorner': makeChildAppender(writeStringTextNode),\n 'upperCorner': makeChildAppender(writeStringTextNode),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML3.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'surfaceMember': makeChildAppender(\n GML3.prototype.writeSurfaceOrPolygonMember\n ),\n 'polygonMember': makeChildAppender(\n GML3.prototype.writeSurfaceOrPolygonMember\n ),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML3.prototype.POINTMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeChildAppender(GML3.prototype.writePointMember),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML3.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeChildAppender(\n GML3.prototype.writeLineStringOrCurveMember\n ),\n 'curveMember': makeChildAppender(\n GML3.prototype.writeLineStringOrCurveMember\n ),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML3.prototype.GEOMETRY_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'Curve': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n 'MultiCurve': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString),\n 'Point': makeChildAppender(GML3.prototype.writePoint),\n 'MultiPoint': makeChildAppender(GML3.prototype.writeMultiPoint),\n 'LineString': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n 'MultiLineString': makeChildAppender(\n GML3.prototype.writeMultiCurveOrLineString\n ),\n 'LinearRing': makeChildAppender(GML3.prototype.writeLinearRing),\n 'Polygon': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n 'MultiPolygon': makeChildAppender(\n GML3.prototype.writeMultiSurfaceOrPolygon\n ),\n 'Surface': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n 'MultiSurface': makeChildAppender(\n GML3.prototype.writeMultiSurfaceOrPolygon\n ),\n 'Envelope': makeChildAppender(GML3.prototype.writeEnvelope),\n },\n};\n\nexport default GML3;\n","/**\n * @module ol/format/GML\n */\nimport GML3 from './GML3.js';\n\n/**\n * Feature format for reading and writing data in the GML format\n * version 3.1.1.\n * Currently only supports GML 3.1.1 Simple Features profile.\n *\n * @class\n * @param {import(\"./GMLBase.js\").Options} [options]\n * Optional configuration object.\n * @api\n */\nconst GML = GML3;\n\n/**\n * Encode an array of features in GML 3.1.1 Simple Features.\n *\n * @function\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {string} Result.\n * @api\n */\nGML.prototype.writeFeatures;\n\n/**\n * Encode an array of features in the GML 3.1.1 format as an XML node.\n *\n * @function\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Node} Node.\n * @api\n */\nGML.prototype.writeFeaturesNode;\n\nexport default GML;\n","/**\n * @module ol/format/GPX\n */\nimport Feature from '../Feature.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport Point from '../geom/Point.js';\nimport XMLFeature from './XMLFeature.js';\nimport {\n OBJECT_PROPERTY_NODE_FACTORY,\n XML_SCHEMA_INSTANCE_URI,\n createElementNS,\n makeArrayPusher,\n makeArraySerializer,\n makeChildAppender,\n makeObjectPropertySetter,\n makeSequence,\n makeSimpleNodeFactory,\n makeStructureNS,\n parseNode,\n pushParseAndPop,\n pushSerializeAndPop,\n} from '../xml.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n readDateTime,\n readDecimal,\n readPositiveInteger,\n readString,\n writeDateTimeTextNode,\n writeDecimalTextNode,\n writeNonNegativeIntegerTextNode,\n writeStringTextNode,\n} from './xsd.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @const\n * @type {Array}\n */\nconst NAMESPACE_URIS = [\n null,\n 'http://www.topografix.com/GPX/1/0',\n 'http://www.topografix.com/GPX/1/1',\n];\n\n/**\n * @const\n * @type {string}\n */\nconst SCHEMA_LOCATION =\n 'http://www.topografix.com/GPX/1/1 ' +\n 'http://www.topografix.com/GPX/1/1/gpx.xsd';\n\n/**\n * @const\n * @type {Object): (Feature|undefined)>}\n */\nconst FEATURE_READER = {\n 'rte': readRte,\n 'trk': readTrk,\n 'wpt': readWpt,\n};\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst GPX_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'rte': makeArrayPusher(readRte),\n 'trk': makeArrayPusher(readTrk),\n 'wpt': makeArrayPusher(readWpt),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'text': makeObjectPropertySetter(readString, 'linkText'),\n 'type': makeObjectPropertySetter(readString, 'linkType'),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst GPX_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'rte': makeChildAppender(writeRte),\n 'trk': makeChildAppender(writeTrk),\n 'wpt': makeChildAppender(writeWpt),\n});\n\n/**\n * @typedef {Object} Options\n * @property {function(Feature, Node):void} [readExtensions] Callback function\n * to process `extensions` nodes. To prevent memory leaks, this callback function must\n * not store any references to the node. Note that the `extensions`\n * node is not allowed in GPX 1.0. Moreover, only `extensions`\n * nodes from `wpt`, `rte` and `trk` can be processed, as those are\n * directly mapped to a feature.\n */\n\n/**\n * @typedef {Object} LayoutOptions\n * @property {boolean} [hasZ] HasZ.\n * @property {boolean} [hasM] HasM.\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GPX format.\n *\n * Note that {@link module:ol/format/GPX~GPX#readFeature} only reads the first\n * feature of the source.\n *\n * When reading, routes (``) are converted into LineString geometries, and\n * tracks (``) into MultiLineString. Any properties on route and track\n * waypoints are ignored.\n *\n * When writing, LineString geometries are output as routes (``), and\n * MultiLineString as tracks (``).\n *\n * @api\n */\nclass GPX extends XMLFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = getProjection('EPSG:4326');\n\n /**\n * @type {function(Feature, Node): void|undefined}\n * @private\n */\n this.readExtensions_ = options.readExtensions;\n }\n\n /**\n * @param {Array} features List of features.\n * @private\n */\n handleReadExtensions_(features) {\n if (!features) {\n features = [];\n }\n for (let i = 0, ii = features.length; i < ii; ++i) {\n const feature = features[i];\n if (this.readExtensions_) {\n const extensionsNode = feature.get('extensionsNode_') || null;\n this.readExtensions_(feature, extensionsNode);\n }\n feature.set('extensionsNode_', undefined);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromNode(node, options) {\n if (!NAMESPACE_URIS.includes(node.namespaceURI)) {\n return null;\n }\n const featureReader = FEATURE_READER[node.localName];\n if (!featureReader) {\n return null;\n }\n const feature = featureReader(node, [this.getReadOptions(node, options)]);\n if (!feature) {\n return null;\n }\n this.handleReadExtensions_([feature]);\n return feature;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {Array} Features.\n */\n readFeaturesFromNode(node, options) {\n if (!NAMESPACE_URIS.includes(node.namespaceURI)) {\n return [];\n }\n if (node.localName == 'gpx') {\n /** @type {Array} */\n const features = pushParseAndPop([], GPX_PARSERS, node, [\n this.getReadOptions(node, options),\n ]);\n if (features) {\n this.handleReadExtensions_(features);\n return features;\n }\n return [];\n }\n return [];\n }\n\n /**\n * Encode an array of features in the GPX format as an XML node.\n * LineString geometries are output as routes (``), and MultiLineString\n * as tracks (``).\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Node} Node.\n * @api\n */\n writeFeaturesNode(features, options) {\n options = this.adaptOptions(options);\n //FIXME Serialize metadata\n const gpx = createElementNS('http://www.topografix.com/GPX/1/1', 'gpx');\n const xmlnsUri = 'http://www.w3.org/2000/xmlns/';\n gpx.setAttributeNS(xmlnsUri, 'xmlns:xsi', XML_SCHEMA_INSTANCE_URI);\n gpx.setAttributeNS(\n XML_SCHEMA_INSTANCE_URI,\n 'xsi:schemaLocation',\n SCHEMA_LOCATION\n );\n gpx.setAttribute('version', '1.1');\n gpx.setAttribute('creator', 'OpenLayers');\n\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({node: gpx}),\n GPX_SERIALIZERS,\n GPX_NODE_FACTORY,\n features,\n [options]\n );\n return gpx;\n }\n}\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'number': makeObjectPropertySetter(readPositiveInteger),\n 'extensions': parseExtensions,\n 'type': makeObjectPropertySetter(readString),\n 'rtept': parseRtePt,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTEPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'number': makeObjectPropertySetter(readPositiveInteger),\n 'type': makeObjectPropertySetter(readString),\n 'extensions': parseExtensions,\n 'trkseg': parseTrkSeg,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRKSEG_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'trkpt': parseTrkPt,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRKPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst WPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n 'magvar': makeObjectPropertySetter(readDecimal),\n 'geoidheight': makeObjectPropertySetter(readDecimal),\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'sym': makeObjectPropertySetter(readString),\n 'type': makeObjectPropertySetter(readString),\n 'fix': makeObjectPropertySetter(readString),\n 'sat': makeObjectPropertySetter(readPositiveInteger),\n 'hdop': makeObjectPropertySetter(readDecimal),\n 'vdop': makeObjectPropertySetter(readDecimal),\n 'pdop': makeObjectPropertySetter(readDecimal),\n 'ageofdgpsdata': makeObjectPropertySetter(readDecimal),\n 'dgpsid': makeObjectPropertySetter(readPositiveInteger),\n 'extensions': parseExtensions,\n});\n\n/**\n * @const\n * @type {Array}\n */\nconst LINK_SEQUENCE = ['text', 'type'];\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst LINK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'text': makeChildAppender(writeStringTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'number',\n 'type',\n 'rtept',\n]);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'rtept': makeArraySerializer(makeChildAppender(writeWptType)),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTEPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, ['ele', 'time']);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRK_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'number',\n 'type',\n 'trkseg',\n]);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'trkseg': makeArraySerializer(makeChildAppender(writeTrkSeg)),\n});\n\n/**\n * @const\n * @type {function(*, Array<*>, string=): (Node|undefined)}\n */\nconst TRKSEG_NODE_FACTORY = makeSimpleNodeFactory('trkpt');\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRKSEG_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'trkpt': makeChildAppender(writeWptType),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst WPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'ele',\n 'time',\n 'magvar',\n 'geoidheight',\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'sym',\n 'type',\n 'fix',\n 'sat',\n 'hdop',\n 'vdop',\n 'pdop',\n 'ageofdgpsdata',\n 'dgpsid',\n]);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst WPT_TYPE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeChildAppender(writeDecimalTextNode),\n 'time': makeChildAppender(writeDateTimeTextNode),\n 'magvar': makeChildAppender(writeDecimalTextNode),\n 'geoidheight': makeChildAppender(writeDecimalTextNode),\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'sym': makeChildAppender(writeStringTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'fix': makeChildAppender(writeStringTextNode),\n 'sat': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'hdop': makeChildAppender(writeDecimalTextNode),\n 'vdop': makeChildAppender(writeDecimalTextNode),\n 'pdop': makeChildAppender(writeDecimalTextNode),\n 'ageofdgpsdata': makeChildAppender(writeDecimalTextNode),\n 'dgpsid': makeChildAppender(writeNonNegativeIntegerTextNode),\n});\n\n/**\n * @const\n * @type {Object}\n */\nconst GEOMETRY_TYPE_TO_NODENAME = {\n 'Point': 'wpt',\n 'LineString': 'rte',\n 'MultiLineString': 'trk',\n};\n\n/**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node|undefined} Node.\n */\nfunction GPX_NODE_FACTORY(value, objectStack, nodeName) {\n const geometry = /** @type {Feature} */ (value).getGeometry();\n if (geometry) {\n const nodeName = GEOMETRY_TYPE_TO_NODENAME[geometry.getType()];\n if (nodeName) {\n const parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS(parentNode.namespaceURI, nodeName);\n }\n }\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {LayoutOptions} layoutOptions Layout options.\n * @param {Element} node Node.\n * @param {!Object} values Values.\n * @return {Array} Flat coordinates.\n */\nfunction appendCoordinate(flatCoordinates, layoutOptions, node, values) {\n flatCoordinates.push(\n parseFloat(node.getAttribute('lon')),\n parseFloat(node.getAttribute('lat'))\n );\n if ('ele' in values) {\n flatCoordinates.push(/** @type {number} */ (values['ele']));\n delete values['ele'];\n layoutOptions.hasZ = true;\n } else {\n flatCoordinates.push(0);\n }\n if ('time' in values) {\n flatCoordinates.push(/** @type {number} */ (values['time']));\n delete values['time'];\n layoutOptions.hasM = true;\n } else {\n flatCoordinates.push(0);\n }\n return flatCoordinates;\n}\n\n/**\n * Choose GeometryLayout based on flags in layoutOptions and adjust flatCoordinates\n * and ends arrays by shrinking them accordingly (removing unused zero entries).\n *\n * @param {LayoutOptions} layoutOptions Layout options.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {Array} [ends] Ends.\n * @return {import(\"../geom/Geometry.js\").GeometryLayout} Layout.\n */\nfunction applyLayoutOptions(layoutOptions, flatCoordinates, ends) {\n /** @type {import(\"../geom/Geometry.js\").GeometryLayout} */\n let layout = 'XY';\n let stride = 2;\n if (layoutOptions.hasZ && layoutOptions.hasM) {\n layout = 'XYZM';\n stride = 4;\n } else if (layoutOptions.hasZ) {\n layout = 'XYZ';\n stride = 3;\n } else if (layoutOptions.hasM) {\n layout = 'XYM';\n stride = 3;\n }\n if (stride !== 4) {\n for (let i = 0, ii = flatCoordinates.length / 4; i < ii; i++) {\n flatCoordinates[i * stride] = flatCoordinates[i * 4];\n flatCoordinates[i * stride + 1] = flatCoordinates[i * 4 + 1];\n if (layoutOptions.hasZ) {\n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 2];\n }\n if (layoutOptions.hasM) {\n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 3];\n }\n }\n flatCoordinates.length = (flatCoordinates.length / 4) * stride;\n if (ends) {\n for (let i = 0, ii = ends.length; i < ii; i++) {\n ends[i] = (ends[i] / 4) * stride;\n }\n }\n }\n return layout;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseLink(node, objectStack) {\n const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n const href = node.getAttribute('href');\n if (href !== null) {\n values['link'] = href;\n }\n parseNode(LINK_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseExtensions(node, objectStack) {\n const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n values['extensionsNode_'] = node;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseRtePt(node, objectStack) {\n const values = pushParseAndPop({}, RTEPT_PARSERS, node, objectStack);\n if (values) {\n const rteValues = /** @type {!Object} */ (\n objectStack[objectStack.length - 1]\n );\n const flatCoordinates = /** @type {Array} */ (\n rteValues['flatCoordinates']\n );\n const layoutOptions = /** @type {LayoutOptions} */ (\n rteValues['layoutOptions']\n );\n appendCoordinate(flatCoordinates, layoutOptions, node, values);\n }\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseTrkPt(node, objectStack) {\n const values = pushParseAndPop({}, TRKPT_PARSERS, node, objectStack);\n if (values) {\n const trkValues = /** @type {!Object} */ (\n objectStack[objectStack.length - 1]\n );\n const flatCoordinates = /** @type {Array} */ (\n trkValues['flatCoordinates']\n );\n const layoutOptions = /** @type {LayoutOptions} */ (\n trkValues['layoutOptions']\n );\n appendCoordinate(flatCoordinates, layoutOptions, node, values);\n }\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseTrkSeg(node, objectStack) {\n const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n parseNode(TRKSEG_PARSERS, node, objectStack);\n const flatCoordinates =\n /** @type {Array} */\n (values['flatCoordinates']);\n const ends = /** @type {Array} */ (values['ends']);\n ends.push(flatCoordinates.length);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Track.\n */\nfunction readRte(node, objectStack) {\n const options = /** @type {import(\"./Feature.js\").ReadOptions} */ (\n objectStack[0]\n );\n const values = pushParseAndPop(\n {\n 'flatCoordinates': [],\n 'layoutOptions': {},\n },\n RTE_PARSERS,\n node,\n objectStack\n );\n if (!values) {\n return undefined;\n }\n const flatCoordinates =\n /** @type {Array} */\n (values['flatCoordinates']);\n delete values['flatCoordinates'];\n const layoutOptions = /** @type {LayoutOptions} */ (values['layoutOptions']);\n delete values['layoutOptions'];\n const layout = applyLayoutOptions(layoutOptions, flatCoordinates);\n const geometry = new LineString(flatCoordinates, layout);\n transformGeometryWithOptions(geometry, false, options);\n const feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Track.\n */\nfunction readTrk(node, objectStack) {\n const options = /** @type {import(\"./Feature.js\").ReadOptions} */ (\n objectStack[0]\n );\n const values = pushParseAndPop(\n {\n 'flatCoordinates': [],\n 'ends': [],\n 'layoutOptions': {},\n },\n TRK_PARSERS,\n node,\n objectStack\n );\n if (!values) {\n return undefined;\n }\n const flatCoordinates =\n /** @type {Array} */\n (values['flatCoordinates']);\n delete values['flatCoordinates'];\n const ends = /** @type {Array} */ (values['ends']);\n delete values['ends'];\n const layoutOptions = /** @type {LayoutOptions} */ (values['layoutOptions']);\n delete values['layoutOptions'];\n const layout = applyLayoutOptions(layoutOptions, flatCoordinates, ends);\n const geometry = new MultiLineString(flatCoordinates, layout, ends);\n transformGeometryWithOptions(geometry, false, options);\n const feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Waypoint.\n */\nfunction readWpt(node, objectStack) {\n const options = /** @type {import(\"./Feature.js\").ReadOptions} */ (\n objectStack[0]\n );\n const values = pushParseAndPop({}, WPT_PARSERS, node, objectStack);\n if (!values) {\n return undefined;\n }\n const layoutOptions = /** @type {LayoutOptions} */ ({});\n const coordinates = appendCoordinate([], layoutOptions, node, values);\n const layout = applyLayoutOptions(layoutOptions, coordinates);\n const geometry = new Point(coordinates, layout);\n transformGeometryWithOptions(geometry, false, options);\n const feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n\n/**\n * @param {Element} node Node.\n * @param {string} value Value for the link's `href` attribute.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeLink(node, value, objectStack) {\n node.setAttribute('href', value);\n const context = objectStack[objectStack.length - 1];\n const properties = context['properties'];\n const link = [properties['linkText'], properties['linkType']];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */ ({node: node}),\n LINK_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n link,\n objectStack,\n LINK_SEQUENCE\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeWptType(node, coordinate, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const parentNode = context.node;\n const namespaceURI = parentNode.namespaceURI;\n const properties = context['properties'];\n //FIXME Projection handling\n node.setAttributeNS(null, 'lat', String(coordinate[1]));\n node.setAttributeNS(null, 'lon', String(coordinate[0]));\n const geometryLayout = context['geometryLayout'];\n switch (geometryLayout) {\n case 'XYZM':\n if (coordinate[3] !== 0) {\n properties['time'] = coordinate[3];\n }\n // fall through\n case 'XYZ':\n if (coordinate[2] !== 0) {\n properties['ele'] = coordinate[2];\n }\n break;\n case 'XYM':\n if (coordinate[2] !== 0) {\n properties['time'] = coordinate[2];\n }\n break;\n default:\n // pass\n }\n const orderedKeys =\n node.nodeName == 'rtept'\n ? RTEPT_TYPE_SEQUENCE[namespaceURI]\n : WPT_TYPE_SEQUENCE[namespaceURI];\n const values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({node: node, 'properties': properties}),\n WPT_TYPE_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n orderedKeys\n );\n}\n\n/**\n * @param {Node} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeRte(node, feature, objectStack) {\n const options = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[0]\n );\n const properties = feature.getProperties();\n const context = {node: node};\n context['properties'] = properties;\n const geometry = feature.getGeometry();\n if (geometry.getType() == 'LineString') {\n const lineString = /** @type {LineString} */ (\n transformGeometryWithOptions(geometry, true, options)\n );\n context['geometryLayout'] = lineString.getLayout();\n properties['rtept'] = lineString.getCoordinates();\n }\n const parentNode = objectStack[objectStack.length - 1].node;\n const orderedKeys = RTE_SEQUENCE[parentNode.namespaceURI];\n const values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(\n context,\n RTE_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n orderedKeys\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeTrk(node, feature, objectStack) {\n const options = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[0]\n );\n const properties = feature.getProperties();\n /** @type {import(\"../xml.js\").NodeStackItem} */\n const context = {node: node};\n context['properties'] = properties;\n const geometry = feature.getGeometry();\n if (geometry.getType() == 'MultiLineString') {\n const multiLineString = /** @type {MultiLineString} */ (\n transformGeometryWithOptions(geometry, true, options)\n );\n properties['trkseg'] = multiLineString.getLineStrings();\n }\n const parentNode = objectStack[objectStack.length - 1].node;\n const orderedKeys = TRK_SEQUENCE[parentNode.namespaceURI];\n const values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(\n context,\n TRK_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n orderedKeys\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {LineString} lineString LineString.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeTrkSeg(node, lineString, objectStack) {\n /** @type {import(\"../xml.js\").NodeStackItem} */\n const context = {node: node};\n context['geometryLayout'] = lineString.getLayout();\n context['properties'] = {};\n pushSerializeAndPop(\n context,\n TRKSEG_SERIALIZERS,\n TRKSEG_NODE_FACTORY,\n lineString.getCoordinates(),\n objectStack\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeWpt(node, feature, objectStack) {\n const options = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[0]\n );\n const context = objectStack[objectStack.length - 1];\n context['properties'] = feature.getProperties();\n const geometry = feature.getGeometry();\n if (geometry.getType() == 'Point') {\n const point = /** @type {Point} */ (\n transformGeometryWithOptions(geometry, true, options)\n );\n context['geometryLayout'] = point.getLayout();\n writeWptType(node, point.getCoordinates(), objectStack);\n }\n}\n\nexport default GPX;\n","/**\n * @module ol/format/TextFeature\n */\nimport FeatureFormat from '../format/Feature.js';\nimport {abstract} from '../util.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for text feature formats.\n *\n * @abstract\n */\nclass TextFeature extends FeatureFormat {\n constructor() {\n super();\n }\n\n /**\n * @return {import(\"./Feature.js\").Type} Format.\n */\n getType() {\n return 'text';\n }\n\n /**\n * Read the feature from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n * @api\n */\n readFeature(source, options) {\n return this.readFeatureFromText(\n getText(source),\n this.adaptOptions(options)\n );\n }\n\n /**\n * @abstract\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromText(text, options) {\n return abstract();\n }\n\n /**\n * Read the features from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {Array} Features.\n * @api\n */\n readFeatures(source, options) {\n return this.readFeaturesFromText(\n getText(source),\n this.adaptOptions(options)\n );\n }\n\n /**\n * @abstract\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromText(text, options) {\n return abstract();\n }\n\n /**\n * Read the geometry from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n * @api\n */\n readGeometry(source, options) {\n return this.readGeometryFromText(\n getText(source),\n this.adaptOptions(options)\n );\n }\n\n /**\n * @abstract\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromText(text, options) {\n return abstract();\n }\n\n /**\n * Read the projection from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default|undefined} Projection.\n * @api\n */\n readProjection(source) {\n return this.readProjectionFromText(getText(source));\n }\n\n /**\n * @param {string} text Text.\n * @protected\n * @return {import(\"../proj/Projection.js\").default|undefined} Projection.\n */\n readProjectionFromText(text) {\n return this.dataProjection;\n }\n\n /**\n * Encode a feature as a string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded feature.\n * @api\n */\n writeFeature(feature, options) {\n return this.writeFeatureText(feature, this.adaptOptions(options));\n }\n\n /**\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @protected\n * @return {string} Text.\n */\n writeFeatureText(feature, options) {\n return abstract();\n }\n\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded features.\n * @api\n */\n writeFeatures(features, options) {\n return this.writeFeaturesText(features, this.adaptOptions(options));\n }\n\n /**\n * @abstract\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @protected\n * @return {string} Text.\n */\n writeFeaturesText(features, options) {\n return abstract();\n }\n\n /**\n * Write a single geometry.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Geometry.\n * @api\n */\n writeGeometry(geometry, options) {\n return this.writeGeometryText(geometry, this.adaptOptions(options));\n }\n\n /**\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @protected\n * @return {string} Text.\n */\n writeGeometryText(geometry, options) {\n return abstract();\n }\n}\n\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {string} Text.\n */\nfunction getText(source) {\n if (typeof source === 'string') {\n return source;\n }\n return '';\n}\n\nexport default TextFeature;\n","/**\n * @module ol/format/IGC\n */\nimport Feature from '../Feature.js';\nimport LineString from '../geom/LineString.js';\nimport TextFeature from './TextFeature.js';\nimport {get as getProjection} from '../proj.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @typedef {'barometric' | 'gps' | 'none'} IGCZ\n * IGC altitude/z. One of 'barometric', 'gps', 'none'.\n */\n\n/**\n * @const\n * @type {RegExp}\n */\nconst B_RECORD_RE =\n /^B(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{5})([NS])(\\d{3})(\\d{5})([EW])([AV])(\\d{5})(\\d{5})/;\n\n/**\n * @const\n * @type {RegExp}\n */\nconst H_RECORD_RE = /^H.([A-Z]{3}).*?:(.*)/;\n\n/**\n * @const\n * @type {RegExp}\n */\nconst HFDTE_RECORD_RE = /^HFDTE(\\d{2})(\\d{2})(\\d{2})/;\n\n/**\n * A regular expression matching the newline characters `\\r\\n`, `\\r` and `\\n`.\n *\n * @const\n * @type {RegExp}\n */\nconst NEWLINE_RE = /\\r\\n|\\r|\\n/;\n\n/**\n * @typedef {Object} Options\n * @property {IGCZ} [altitudeMode='none'] Altitude mode. Possible\n * values are `'barometric'`, `'gps'`, and `'none'`.\n */\n\n/**\n * @classdesc\n * Feature format for `*.igc` flight recording files.\n *\n * As IGC sources contain a single feature,\n * {@link module:ol/format/IGC~IGC#readFeatures} will return the feature in an\n * array\n *\n * @api\n */\nclass IGC extends TextFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = getProjection('EPSG:4326');\n\n /**\n * @private\n * @type {IGCZ}\n */\n this.altitudeMode_ = options.altitudeMode ? options.altitudeMode : 'none';\n }\n\n /**\n * @protected\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromText(text, options) {\n const altitudeMode = this.altitudeMode_;\n const lines = text.split(NEWLINE_RE);\n /** @type {Object} */\n const properties = {};\n const flatCoordinates = [];\n let year = 2000;\n let month = 0;\n let day = 1;\n let lastDateTime = -1;\n let i, ii;\n for (i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n let m;\n if (line.charAt(0) == 'B') {\n m = B_RECORD_RE.exec(line);\n if (m) {\n const hour = parseInt(m[1], 10);\n const minute = parseInt(m[2], 10);\n const second = parseInt(m[3], 10);\n let y = parseInt(m[4], 10) + parseInt(m[5], 10) / 60000;\n if (m[6] == 'S') {\n y = -y;\n }\n let x = parseInt(m[7], 10) + parseInt(m[8], 10) / 60000;\n if (m[9] == 'W') {\n x = -x;\n }\n flatCoordinates.push(x, y);\n if (altitudeMode != 'none') {\n let z;\n if (altitudeMode == 'gps') {\n z = parseInt(m[11], 10);\n } else if (altitudeMode == 'barometric') {\n z = parseInt(m[12], 10);\n } else {\n z = 0;\n }\n flatCoordinates.push(z);\n }\n let dateTime = Date.UTC(year, month, day, hour, minute, second);\n // Detect UTC midnight wrap around.\n if (dateTime < lastDateTime) {\n dateTime = Date.UTC(year, month, day + 1, hour, minute, second);\n }\n flatCoordinates.push(dateTime / 1000);\n lastDateTime = dateTime;\n }\n } else if (line.charAt(0) == 'H') {\n m = HFDTE_RECORD_RE.exec(line);\n if (m) {\n day = parseInt(m[1], 10);\n month = parseInt(m[2], 10) - 1;\n year = 2000 + parseInt(m[3], 10);\n } else {\n m = H_RECORD_RE.exec(line);\n if (m) {\n properties[m[1]] = m[2].trim();\n }\n }\n }\n }\n if (flatCoordinates.length === 0) {\n return null;\n }\n const layout = altitudeMode == 'none' ? 'XYM' : 'XYZM';\n const lineString = new LineString(flatCoordinates, layout);\n const feature = new Feature(\n transformGeometryWithOptions(lineString, false, options)\n );\n feature.setProperties(properties, true);\n return feature;\n }\n\n /**\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromText(text, options) {\n const feature = this.readFeatureFromText(text, options);\n if (feature) {\n return [feature];\n }\n return [];\n }\n}\n\nexport default IGC;\n","/**\n * @module ol/format/KML\n */\nimport Feature from '../Feature.js';\nimport Fill from '../style/Fill.js';\nimport GeometryCollection from '../geom/GeometryCollection.js';\nimport Icon from '../style/Icon.js';\nimport ImageState from '../ImageState.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport Stroke from '../style/Stroke.js';\nimport Style from '../style/Style.js';\nimport Text from '../style/Text.js';\nimport XMLFeature from './XMLFeature.js';\nimport {\n OBJECT_PROPERTY_NODE_FACTORY,\n XML_SCHEMA_INSTANCE_URI,\n createElementNS,\n getAllTextContent,\n isDocument,\n makeArrayExtender,\n makeArrayPusher,\n makeChildAppender,\n makeObjectPropertySetter,\n makeReplacer,\n makeSequence,\n makeSimpleNodeFactory,\n makeStructureNS,\n parse,\n parseNode,\n pushParseAndPop,\n pushSerializeAndPop,\n} from '../xml.js';\nimport {asArray} from '../color.js';\nimport {assert} from '../asserts.js';\nimport {extend} from '../array.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n readBoolean,\n readDecimal,\n readString,\n writeBooleanTextNode,\n writeCDATASection,\n writeDecimalTextNode,\n writeStringTextNode,\n} from './xsd.js';\nimport {toRadians} from '../math.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @typedef {Object} Vec2\n * @property {number} x X coordinate.\n * @property {import(\"../style/Icon.js\").IconAnchorUnits} xunits Units of x.\n * @property {number} y Y coordinate.\n * @property {import(\"../style/Icon.js\").IconAnchorUnits} yunits Units of Y.\n * @property {import(\"../style/Icon.js\").IconOrigin} [origin] Origin.\n */\n\n/**\n * @typedef {Object} GxTrackObject\n * @property {Array>} coordinates Coordinates.\n * @property {Array} whens Whens.\n */\n\n/**\n * @const\n * @type {Array}\n */\nconst GX_NAMESPACE_URIS = ['http://www.google.com/kml/ext/2.2'];\n\n/**\n * @const\n * @type {Array}\n */\nconst NAMESPACE_URIS = [\n null,\n 'http://earth.google.com/kml/2.0',\n 'http://earth.google.com/kml/2.1',\n 'http://earth.google.com/kml/2.2',\n 'http://www.opengis.net/kml/2.2',\n];\n\n/**\n * @const\n * @type {string}\n */\nconst SCHEMA_LOCATION =\n 'http://www.opengis.net/kml/2.2 ' +\n 'https://developers.google.com/kml/schema/kml22gx.xsd';\n\n/**\n * @type {Object}\n */\nconst ICON_ANCHOR_UNITS_MAP = {\n 'fraction': 'fraction',\n 'pixels': 'pixels',\n 'insetPixels': 'pixels',\n};\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst PLACEMARK_PARSERS = makeStructureNS(\n NAMESPACE_URIS,\n {\n 'ExtendedData': extendedDataParser,\n 'Region': regionParser,\n 'MultiGeometry': makeObjectPropertySetter(readMultiGeometry, 'geometry'),\n 'LineString': makeObjectPropertySetter(readLineString, 'geometry'),\n 'LinearRing': makeObjectPropertySetter(readLinearRing, 'geometry'),\n 'Point': makeObjectPropertySetter(readPoint, 'geometry'),\n 'Polygon': makeObjectPropertySetter(readPolygon, 'geometry'),\n 'Style': makeObjectPropertySetter(readStyle),\n 'StyleMap': placemarkStyleMapParser,\n 'address': makeObjectPropertySetter(readString),\n 'description': makeObjectPropertySetter(readString),\n 'name': makeObjectPropertySetter(readString),\n 'open': makeObjectPropertySetter(readBoolean),\n 'phoneNumber': makeObjectPropertySetter(readString),\n 'styleUrl': makeObjectPropertySetter(readStyleURL),\n 'visibility': makeObjectPropertySetter(readBoolean),\n },\n makeStructureNS(GX_NAMESPACE_URIS, {\n 'MultiTrack': makeObjectPropertySetter(readGxMultiTrack, 'geometry'),\n 'Track': makeObjectPropertySetter(readGxTrack, 'geometry'),\n })\n);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst NETWORK_LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ExtendedData': extendedDataParser,\n 'Region': regionParser,\n 'Link': linkParser,\n 'address': makeObjectPropertySetter(readString),\n 'description': makeObjectPropertySetter(readString),\n 'name': makeObjectPropertySetter(readString),\n 'open': makeObjectPropertySetter(readBoolean),\n 'phoneNumber': makeObjectPropertySetter(readString),\n 'visibility': makeObjectPropertySetter(readBoolean),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'href': makeObjectPropertySetter(readURI),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst CAMERA_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n Altitude: makeObjectPropertySetter(readDecimal),\n Longitude: makeObjectPropertySetter(readDecimal),\n Latitude: makeObjectPropertySetter(readDecimal),\n Tilt: makeObjectPropertySetter(readDecimal),\n AltitudeMode: makeObjectPropertySetter(readString),\n Heading: makeObjectPropertySetter(readDecimal),\n Roll: makeObjectPropertySetter(readDecimal),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst REGION_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'LatLonAltBox': latLonAltBoxParser,\n 'Lod': lodParser,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst KML_SEQUENCE = makeStructureNS(NAMESPACE_URIS, ['Document', 'Placemark']);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst KML_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'Document': makeChildAppender(writeDocument),\n 'Placemark': makeChildAppender(writePlacemark),\n});\n\n/**\n * @type {import(\"../color.js\").Color}\n */\nlet DEFAULT_COLOR;\n\n/**\n * @type {Fill|null}\n */\nlet DEFAULT_FILL_STYLE = null;\n\n/**\n * Get the default fill style (or null if not yet set).\n * @return {Fill|null} The default fill style.\n */\nexport function getDefaultFillStyle() {\n return DEFAULT_FILL_STYLE;\n}\n\n/**\n * @type {import(\"../size.js\").Size}\n */\nlet DEFAULT_IMAGE_STYLE_ANCHOR;\n\n/**\n * @type {import(\"../style/Icon.js\").IconAnchorUnits}\n */\nlet DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS;\n\n/**\n * @type {import(\"../style/Icon.js\").IconAnchorUnits}\n */\nlet DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS;\n\n/**\n * @type {import(\"../size.js\").Size}\n */\nlet DEFAULT_IMAGE_STYLE_SIZE;\n\n/**\n * @type {string}\n */\nlet DEFAULT_IMAGE_STYLE_SRC;\n\n/**\n * @type {import(\"../style/Image.js\").default|null}\n */\nlet DEFAULT_IMAGE_STYLE = null;\n\n/**\n * Get the default image style (or null if not yet set).\n * @return {import(\"../style/Image.js\").default|null} The default image style.\n */\nexport function getDefaultImageStyle() {\n return DEFAULT_IMAGE_STYLE;\n}\n\n/**\n * @type {string}\n */\nlet DEFAULT_NO_IMAGE_STYLE;\n\n/**\n * @type {Stroke|null}\n */\nlet DEFAULT_STROKE_STYLE = null;\n\n/**\n * Get the default stroke style (or null if not yet set).\n * @return {Stroke|null} The default stroke style.\n */\nexport function getDefaultStrokeStyle() {\n return DEFAULT_STROKE_STYLE;\n}\n\n/**\n * @type {Stroke}\n */\nlet DEFAULT_TEXT_STROKE_STYLE;\n\n/**\n * @type {Text|null}\n */\nlet DEFAULT_TEXT_STYLE = null;\n\n/**\n * Get the default text style (or null if not yet set).\n * @return {Text|null} The default text style.\n */\nexport function getDefaultTextStyle() {\n return DEFAULT_TEXT_STYLE;\n}\n\n/**\n * @type {Style|null}\n */\nlet DEFAULT_STYLE = null;\n\n/**\n * Get the default style (or null if not yet set).\n * @return {Style|null} The default style.\n */\nexport function getDefaultStyle() {\n return DEFAULT_STYLE;\n}\n\n/**\n * @type {Array