{"version":3,"file":"timberflowform-map.js","mappings":"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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,IACA,GAEJ,YAAe,CACX,GACA,IACA,GACA,GAEJ,QAAW,CACP,IACA,EACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,IACA,IACA,GAEJ,KAAQ,CACJ,IACA,IACA,EACA,GAEJ,UAAa,CACT,IACA,IACA,GACA,GAEJ,KAAQ,CACJ,IACA,IACA,IACA,GAEJ,MAAS,CACL,EACA,IACA,EACA,GAEJ,YAAe,CACX,IACA,IACA,GACA,GAEJ,KAAQ,CACJ,IACA,IACA,IACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,GACA,GACA,GAEJ,OAAU,CACN,GACA,EACA,IACA,GAEJ,MAAS,CACL,IACA,IACA,IACA,GAEJ,MAAS,CACL,IACA,IACA,IACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,cAAiB,CAC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","sources":["webpack://TimberFlowFormMap/webpack/universalModuleDefinition","webpack://TimberFlowFormMap/webpack/runtime/load script","webpack://TimberFlowFormMap/./node_modules/@geo/js/dist/geo-js.min.js","webpack://TimberFlowFormMap/./node_modules/axios/index.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/adapters/xhr.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/axios.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/cancel/Cancel.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/cancel/CancelToken.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/cancel/isCancel.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/Axios.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/InterceptorManager.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/buildFullPath.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/createError.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/dispatchRequest.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/enhanceError.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/mergeConfig.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/settle.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/core/transformData.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/defaults.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/bind.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/buildURL.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/combineURLs.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/cookies.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/spread.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/helpers/validator.js","webpack://TimberFlowFormMap/./node_modules/axios/lib/utils.js","webpack://TimberFlowFormMap/./node_modules/clsx/dist/clsx.m.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addDays/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addHours/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addMinutes/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addMonths/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addQuarters/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addWeeks/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/addYears/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/constants/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/endOfDay/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/endOfWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/endOfYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/format/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getDate/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getDay/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getHours/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getISOWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getMinutes/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getMonth/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getQuarter/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getSeconds/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getTime/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isAfter/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isBefore/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isDate/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isEqual/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isSameDay/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isSameMonth/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isSameQuarter/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isSameYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isValid/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/isWithinInterval/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/max/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/min/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parseISO/index.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/Setter.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/Parser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/constants.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/utils.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/parse/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/setHours/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/setMinutes/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/setMonth/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/setQuarter/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/setSeconds/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/setYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/set/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/startOfDay/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/startOfQuarter/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/startOfWeek/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/startOfYear/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/subDays/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/subMonths/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/subQuarters/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/subWeeks/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/subYears/index.js","webpack://TimberFlowFormMap/./node_modules/date-fns/esm/toDate/index.js","webpack://TimberFlowFormMap/./node_modules/earcut/src/earcut.js","webpack://TimberFlowFormMap/./node_modules/elm-pep/dist/elm-pep.js","webpack://TimberFlowFormMap/./node_modules/fastpriorityqueue/FastPriorityQueue.js","webpack://TimberFlowFormMap/./src/img/LVM_GEO_logo_128.jpg","webpack://TimberFlowFormMap/./src/img/basemaps/mamma.png","webpack://TimberFlowFormMap/./src/img/basemaps/orto2.png","webpack://TimberFlowFormMap/./src/img/basemaps/topo10.png","webpack://TimberFlowFormMap/./node_modules/ieee754/index.js","webpack://TimberFlowFormMap/./node_modules/object-assign/index.js","webpack://TimberFlowFormMap/./node_modules/pbf/index.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/constants/values.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/constants/units.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/match.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projString.js","webpack://TimberFlowFormMap/./node_modules/wkt-parser/parser.js","webpack://TimberFlowFormMap/./node_modules/wkt-parser/process.js","webpack://TimberFlowFormMap/./node_modules/wkt-parser/index.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/defs.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/global.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/parseCode.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/extend.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/msfnz.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/sign.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/adjust_lon.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/tsfnz.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/phi2z.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/longlat.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/merc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/constants/Datum.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/nadgrid.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/Proj.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/deriveConstants.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/datum.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/datumUtils.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/datum_transform.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/adjust_axis.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/toPoint.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/checkSanity.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/transform.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/core.js","webpack://TimberFlowFormMap/./node_modules/mgrs/mgrs.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/Point.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/pj_enfn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/tmerc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/sinh.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/hypot.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/gatg.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/clens_cmplx.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/cosh.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/etmerc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/clens.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/asinhy.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/log1py.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/utm.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/adjust_zone.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/srat.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/gauss.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/sterea.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/stere.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/somerc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/omerc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/lcc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/krovak.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/mlfn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/e0fn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/e1fn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/e2fn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/e3fn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/gN.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/adjust_lat.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/imlfn.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/cass.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/qsfnz.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/laea.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/asinz.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/aea.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/gnom.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/cea.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/common/iqsfnz.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/eqc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/poly.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/nzmg.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/mill.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/sinu.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/moll.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/eqdc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/vandg.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/aeqd.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/ortho.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/qsc.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/robin.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/geocent.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/tpers.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/geos.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/projections/eqearth.js","webpack://TimberFlowFormMap/./node_modules/proj4/projs.js","webpack://TimberFlowFormMap/./node_modules/proj4/lib/index.js","webpack://TimberFlowFormMap/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://TimberFlowFormMap/./node_modules/prop-types/index.js","webpack://TimberFlowFormMap/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://TimberFlowFormMap/./node_modules/rbush/rbush.min.js","webpack://TimberFlowFormMap/./node_modules/react-datepicker/dist/react-datepicker.min.js","webpack://TimberFlowFormMap/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://TimberFlowFormMap/./node_modules/react-dom/index.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/Draggable.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/DraggableCore.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/cjs.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/utils/domFns.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/utils/log.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack://TimberFlowFormMap/./node_modules/react-draggable/build/cjs/utils/shims.js","webpack://TimberFlowFormMap/./node_modules/react-fast-compare/index.js","webpack://TimberFlowFormMap/./node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","webpack://TimberFlowFormMap/./node_modules/react-popper/lib/esm/Manager.js","webpack://TimberFlowFormMap/./node_modules/react-popper/lib/esm/utils.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/math.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/enums.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/createPopper.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/within.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/popper.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://TimberFlowFormMap/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://TimberFlowFormMap/./node_modules/react-popper/lib/esm/usePopper.js","webpack://TimberFlowFormMap/./node_modules/react-popper/lib/esm/Popper.js","webpack://TimberFlowFormMap/./node_modules/react-popper/lib/esm/Reference.js","webpack://TimberFlowFormMap/./node_modules/react/cjs/react.production.min.js","webpack://TimberFlowFormMap/./node_modules/react/index.js","webpack://TimberFlowFormMap/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://TimberFlowFormMap/./node_modules/scheduler/index.js","webpack://TimberFlowFormMap/./src/Contexts/AppContext.tsx","webpack://TimberFlowFormMap/./src/Contexts/DrawingContext.tsx","webpack://TimberFlowFormMap/./src/Contexts/RegistrationContext.tsx","webpack://TimberFlowFormMap/./src/Elements/Accordion.tsx","webpack://TimberFlowFormMap/./src/Elements/AccordionInfo.tsx","webpack://TimberFlowFormMap/./src/Elements/Checkbox.tsx","webpack://TimberFlowFormMap/./src/Elements/CloseButton.tsx","webpack://TimberFlowFormMap/./src/Elements/HelpButton.tsx","webpack://TimberFlowFormMap/./src/Elements/PopupButton.tsx","webpack://TimberFlowFormMap/./src/Elements/SearchInfoButton.tsx","webpack://TimberFlowFormMap/./src/Forms/ApplicantForm.tsx","webpack://TimberFlowFormMap/./src/Forms/ConditionsForm.tsx","webpack://TimberFlowFormMap/./src/Forms/DrawingForm.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/DrawLVMRoads.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/DrawProperty.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/DrawRoads.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/DrawYards.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/DrawingButton.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/DrawingTools.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/Search.tsx","webpack://TimberFlowFormMap/./src/Forms/Drawing/SketchProps.tsx","webpack://TimberFlowFormMap/./src/Forms/Form.tsx","webpack://TimberFlowFormMap/./src/Forms/InputField.tsx","webpack://TimberFlowFormMap/./src/Forms/SummaryForm.tsx","webpack://TimberFlowFormMap/./src/Forms/TermForm.tsx","webpack://TimberFlowFormMap/./src/Forms/Upload.tsx","webpack://TimberFlowFormMap/./src/Forms/UploadList.tsx","webpack://TimberFlowFormMap/./src/Map/BasemapSwitch.tsx","webpack://TimberFlowFormMap/./src/Map/Buttons/Attribution.tsx","webpack://TimberFlowFormMap/./src/Map/Buttons/Drawing.tsx","webpack://TimberFlowFormMap/./src/Map/Buttons/GeoLocation.tsx","webpack://TimberFlowFormMap/./src/Map/Buttons/Home.tsx","webpack://TimberFlowFormMap/./src/Map/Buttons/Layers.tsx","webpack://TimberFlowFormMap/./src/Map/Buttons/Scale.tsx","webpack://TimberFlowFormMap/./src/Map/config.ts","webpack://TimberFlowFormMap/./src/Map/enums.ts","webpack://TimberFlowFormMap/./src/Map/rest.ts","webpack://TimberFlowFormMap/./src/Map/snapshot.ts","webpack://TimberFlowFormMap/./src/Map/symbols.ts","webpack://TimberFlowFormMap/./src/Map/useMap.ts","webpack://TimberFlowFormMap/./src/Map/utils.ts","webpack://TimberFlowFormMap/./src/Popups/HelpPopup.tsx","webpack://TimberFlowFormMap/./src/Popups/Info/Info.tsx","webpack://TimberFlowFormMap/./src/Popups/Info/InfoButton.tsx","webpack://TimberFlowFormMap/./src/Popups/LayersMenu.tsx","webpack://TimberFlowFormMap/./src/Popups/Popup.tsx","webpack://TimberFlowFormMap/./src/Popups/Portal.tsx","webpack://TimberFlowFormMap/./src/Popups/SearchPopup.tsx","webpack://TimberFlowFormMap/./src/Providers/mapProvider.tsx","webpack://TimberFlowFormMap/./src/Registration/PrivacySection.tsx","webpack://TimberFlowFormMap/./src/Registration/Registration.tsx","webpack://TimberFlowFormMap/./src/Registration/SubmitForm.tsx","webpack://TimberFlowFormMap/./src/Registration/SummarySection.tsx","webpack://TimberFlowFormMap/./src/Registration/UserConsent.tsx","webpack://TimberFlowFormMap/./src/renderMap.tsx","webpack://TimberFlowFormMap/./src/timberflowform-map.ts","webpack://TimberFlowFormMap/./node_modules/warning/warning.js","webpack://TimberFlowFormMap/./node_modules/xml-utils/count-substring.js","webpack://TimberFlowFormMap/./node_modules/xml-utils/find-tag-by-name.js","webpack://TimberFlowFormMap/./node_modules/xml-utils/find-tags-by-name.js","webpack://TimberFlowFormMap/./node_modules/xml-utils/get-attribute.js","webpack://TimberFlowFormMap/./node_modules/xml-utils/index-of-match-end.js","webpack://TimberFlowFormMap/./node_modules/xml-utils/index-of-match.js","webpack://TimberFlowFormMap/./node_modules/classnames/index.js","webpack://TimberFlowFormMap/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/globals.js","webpack://TimberFlowFormMap/./node_modules/jsts/hasInterface.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/io/Serializable.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/Character.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/Cloneable.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/Comparable.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/Long.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/Double.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/Exception.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/IllegalArgumentException.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/IllegalStateException.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/IndexOutOfBoundsException.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/Integer.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/RuntimeException.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/StringBuffer.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/StringBuilder.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/System.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/lang/UnsupportedOperationException.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/ArrayList.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Arrays.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Collection.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Comparator.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/HashSet.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/List.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Map.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/NoSuchElementException.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Set.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/CGAlgorithmsDD.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/Orientation.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/util/NumberUtil.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Coordinate.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateArrays.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateFilter.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateList.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequence.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequenceFilter.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequences.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateXY.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateXYM.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateXYZM.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Coordinates.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Dimension.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Envelope.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Geometry.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/SortedSet.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/TreeSet.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryCollection.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryComponentFilter.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequenceFactory.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/impl/CoordinateArraySequenceFactory.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryFactory.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryFilter.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/Length.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/LineString.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Lineal.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/LinearRing.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/MultiLineString.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/MultiPoint.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/MultiPolygon.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Point.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/Area.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Polygon.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Polygonal.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/HashMap.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/PrecisionModel.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Puntal.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/impl/CoordinateArraySequence.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/io/OL3Parser.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/math/DD.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/math/MathUtil.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferParameters.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentPointComparator.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentNode.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/SortedMap.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/TreeMap.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentNodeList.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/io/WKTParser.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/io/WKTWriter.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/Octant.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentString.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/NodableSegmentString.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/NodedSegmentString.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/Noder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/ScaledNoder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/TopologyException.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/Intersection.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/Distance.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/LineIntersector.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/RobustLineIntersector.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/NodingValidator.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/Boundable.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/ItemBoundable.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/PriorityQueue.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/SpatialIndex.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/AbstractNode.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Collections.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/EnvelopeDistance.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/BoundablePair.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/ItemVisitor.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/AbstractSTRtree.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/ItemDistance.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/strtree/STRtree.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/LineSegment.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainOverlapAction.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChain.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Quadrant.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainBuilder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/SinglePassNoder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/MCIndexNoder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/snapround/HotPixel.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainSelectAction.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/snapround/MCIndexPointSnapper.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/SegmentIntersector.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/InteriorIntersectionFinderAdder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/snapround/MCIndexSnapRounder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Location.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Position.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/EmptyStackException.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Stack.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/RightmostEdgeFinder.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/LinkedList.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferSubgraph.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferInputLineSimplifier.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetSegmentString.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/Angle.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetSegmentGenerator.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetCurveBuilder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/TopologyLocation.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Label.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/GraphComponent.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Node.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/NodeMap.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/NodeFactory.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeEnd.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/DirectedEdge.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/PlanarGraph.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/RayCrossingCounter.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/PointLocation.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeRing.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/MinimalEdgeRing.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/MaximalEdgeRing.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/PolygonBuilder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/SubgraphDepthLocater.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/NotRepresentableException.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/HCoordinate.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/Triangle.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetCurveSetBuilder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/locate/PointOnGeometryLocator.js","webpack://TimberFlowFormMap/./node_modules/jsts/java/util/Iterator.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/GeometryCollectionIterator.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/algorithm/locate/SimplePointInAreaLocator.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeEndStar.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/DirectedEdgeStar.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/overlay/OverlayNodeFactory.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/OrientedCoordinateArray.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeList.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/noding/IntersectionAdder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeIntersection.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeIntersectionList.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geom/IntersectionMatrix.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Depth.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/util/IntArrayList.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/index/MonotoneChainIndexer.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/index/MonotoneChainEdge.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/geomgraph/Edge.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferBuilder.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferOp.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/util/AssertionFailedException.js","webpack://TimberFlowFormMap/./node_modules/jsts/org/locationtech/jts/util/Assert.js","webpack://TimberFlowFormMap/./node_modules/ol/AssertionError.js","webpack://TimberFlowFormMap/./node_modules/ol/Collection.js","webpack://TimberFlowFormMap/./node_modules/ol/CollectionEventType.js","webpack://TimberFlowFormMap/./node_modules/ol/DataTile.js","webpack://TimberFlowFormMap/./node_modules/ol/Disposable.js","webpack://TimberFlowFormMap/./node_modules/ol/Feature.js","webpack://TimberFlowFormMap/./node_modules/ol/Image.js","webpack://TimberFlowFormMap/./node_modules/ol/ImageBase.js","webpack://TimberFlowFormMap/./node_modules/ol/ImageCanvas.js","webpack://TimberFlowFormMap/./node_modules/ol/ImageState.js","webpack://TimberFlowFormMap/./node_modules/ol/ImageTile.js","webpack://TimberFlowFormMap/./node_modules/ol/Kinetic.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/Map.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/Composite.js","webpack://TimberFlowFormMap/./node_modules/ol/Map.js","webpack://TimberFlowFormMap/./node_modules/ol/MapBrowserEvent.js","webpack://TimberFlowFormMap/./node_modules/ol/MapBrowserEventHandler.js","webpack://TimberFlowFormMap/./node_modules/ol/MapBrowserEventType.js","webpack://TimberFlowFormMap/./node_modules/ol/MapEvent.js","webpack://TimberFlowFormMap/./node_modules/ol/MapEventType.js","webpack://TimberFlowFormMap/./node_modules/ol/MapProperty.js","webpack://TimberFlowFormMap/./node_modules/ol/Object.js","webpack://TimberFlowFormMap/./node_modules/ol/ObjectEventType.js","webpack://TimberFlowFormMap/./node_modules/ol/Observable.js","webpack://TimberFlowFormMap/./node_modules/ol/Overlay.js","webpack://TimberFlowFormMap/./node_modules/ol/Tile.js","webpack://TimberFlowFormMap/./node_modules/ol/TileCache.js","webpack://TimberFlowFormMap/./node_modules/ol/structs/PriorityQueue.js","webpack://TimberFlowFormMap/./node_modules/ol/TileQueue.js","webpack://TimberFlowFormMap/./node_modules/ol/TileRange.js","webpack://TimberFlowFormMap/./node_modules/ol/TileState.js","webpack://TimberFlowFormMap/./node_modules/ol/VectorRenderTile.js","webpack://TimberFlowFormMap/./node_modules/ol/VectorTile.js","webpack://TimberFlowFormMap/./node_modules/ol/centerconstraint.js","webpack://TimberFlowFormMap/./node_modules/ol/resolutionconstraint.js","webpack://TimberFlowFormMap/./node_modules/ol/View.js","webpack://TimberFlowFormMap/./node_modules/ol/ViewHint.js","webpack://TimberFlowFormMap/./node_modules/ol/ViewProperty.js","webpack://TimberFlowFormMap/./node_modules/ol/array.js","webpack://TimberFlowFormMap/./node_modules/ol/asserts.js","webpack://TimberFlowFormMap/./node_modules/ol/color.js","webpack://TimberFlowFormMap/./node_modules/ol/colorlike.js","webpack://TimberFlowFormMap/./node_modules/ol/console.js","webpack://TimberFlowFormMap/./node_modules/ol/control/FullScreen.js","webpack://TimberFlowFormMap/./node_modules/ol/control/MousePosition.js","webpack://TimberFlowFormMap/./node_modules/ol/control/OverviewMap.js","webpack://TimberFlowFormMap/./node_modules/ol/control/ScaleLine.js","webpack://TimberFlowFormMap/./node_modules/ol/control/ZoomSlider.js","webpack://TimberFlowFormMap/./node_modules/ol/control/ZoomToExtent.js","webpack://TimberFlowFormMap/./node_modules/ol/control/Attribution.js","webpack://TimberFlowFormMap/./node_modules/ol/control/Control.js","webpack://TimberFlowFormMap/./node_modules/ol/control/Rotate.js","webpack://TimberFlowFormMap/./node_modules/ol/control/Zoom.js","webpack://TimberFlowFormMap/./node_modules/ol/control/defaults.js","webpack://TimberFlowFormMap/./node_modules/ol/coordinate.js","webpack://TimberFlowFormMap/./node_modules/ol/css.js","webpack://TimberFlowFormMap/./node_modules/ol/dom.js","webpack://TimberFlowFormMap/./node_modules/ol/easing.js","webpack://TimberFlowFormMap/./node_modules/ol/events.js","webpack://TimberFlowFormMap/./node_modules/ol/events/Event.js","webpack://TimberFlowFormMap/./node_modules/ol/events/EventType.js","webpack://TimberFlowFormMap/./node_modules/ol/events/Target.js","webpack://TimberFlowFormMap/./node_modules/ol/events/condition.js","webpack://TimberFlowFormMap/./node_modules/ol/extent.js","webpack://TimberFlowFormMap/./node_modules/ol/extent/Relationship.js","webpack://TimberFlowFormMap/./node_modules/ol/featureloader.js","webpack://TimberFlowFormMap/./node_modules/ol/format/EsriJSON.js","webpack://TimberFlowFormMap/./node_modules/ol/xml.js","webpack://TimberFlowFormMap/./node_modules/ol/format/XMLFeature.js","webpack://TimberFlowFormMap/./node_modules/ol/format/GMLBase.js","webpack://TimberFlowFormMap/./node_modules/ol/format/xsd.js","webpack://TimberFlowFormMap/./node_modules/ol/format/GML2.js","webpack://TimberFlowFormMap/./node_modules/ol/format/GML3.js","webpack://TimberFlowFormMap/./node_modules/ol/format/GML.js","webpack://TimberFlowFormMap/./node_modules/ol/format/GPX.js","webpack://TimberFlowFormMap/./node_modules/ol/format/TextFeature.js","webpack://TimberFlowFormMap/./node_modules/ol/format/IGC.js","webpack://TimberFlowFormMap/./node_modules/ol/format/KML.js","webpack://TimberFlowFormMap/./node_modules/ol/format/XML.js","webpack://TimberFlowFormMap/./node_modules/ol/format/xlink.js","webpack://TimberFlowFormMap/./node_modules/ol/format/OWS.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/flip.js","webpack://TimberFlowFormMap/./node_modules/ol/format/Polyline.js","webpack://TimberFlowFormMap/./node_modules/ol/format/TopoJSON.js","webpack://TimberFlowFormMap/./node_modules/ol/format/GML32.js","webpack://TimberFlowFormMap/./node_modules/ol/format/filter/Filter.js","webpack://TimberFlowFormMap/./node_modules/ol/format/filter/LogicalNary.js","webpack://TimberFlowFormMap/./node_modules/ol/format/filter/And.js","webpack://TimberFlowFormMap/./node_modules/ol/format/filter/Bbox.js","webpack://TimberFlowFormMap/./node_modules/ol/format/WFS.js","webpack://TimberFlowFormMap/./node_modules/ol/format/filter.js","webpack://TimberFlowFormMap/./node_modules/ol/format/WKB.js","webpack://TimberFlowFormMap/./node_modules/ol/format/WKT.js","webpack://TimberFlowFormMap/./node_modules/ol/format/WMSCapabilities.js","webpack://TimberFlowFormMap/./node_modules/ol/format/WMSGetFeatureInfo.js","webpack://TimberFlowFormMap/./node_modules/ol/format/WMTSCapabilities.js","webpack://TimberFlowFormMap/./node_modules/ol/format/Feature.js","webpack://TimberFlowFormMap/./node_modules/ol/format/GeoJSON.js","webpack://TimberFlowFormMap/./node_modules/ol/format/IIIFInfo.js","webpack://TimberFlowFormMap/./node_modules/ol/format/JSONFeature.js","webpack://TimberFlowFormMap/./node_modules/ol/format/MVT.js","webpack://TimberFlowFormMap/./node_modules/ol/functions.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/Circle.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/Geometry.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/GeometryCollection.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/LineString.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/LinearRing.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/MultiLineString.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/MultiPoint.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/MultiPolygon.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/Point.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/Polygon.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/SimpleGeometry.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/area.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/center.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/closest.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/contains.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/deflate.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/inflate.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/interiorpoint.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/interpolate.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/intersectsextent.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/length.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/reverse.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/orient.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/segments.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/simplify.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/transform.js","webpack://TimberFlowFormMap/./node_modules/ol/has.js","webpack://TimberFlowFormMap/./node_modules/ol/Geolocation.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DblClickDragZoom.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DragAndDrop.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DragRotateAndZoom.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Draw.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Extent.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Link.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Modify.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Select.js","webpack://TimberFlowFormMap/./node_modules/ol/events/SnapEvent.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Snap.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Translate.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DoubleClickZoom.js","webpack://TimberFlowFormMap/./node_modules/ol/render/Box.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DragBox.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DragPan.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DragRotate.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/DragZoom.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Interaction.js","webpack://TimberFlowFormMap/./node_modules/ol/events/Key.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/KeyboardPan.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/KeyboardZoom.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/MouseWheelZoom.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/PinchRotate.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/PinchZoom.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Pointer.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/Property.js","webpack://TimberFlowFormMap/./node_modules/ol/interaction/defaults.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/Buffer.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/ContextEventType.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/PostProcessingPass.js","webpack://TimberFlowFormMap/./node_modules/ol/vec/mat4.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/Helper.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/webgl/Layer.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/RenderTarget.js","webpack://TimberFlowFormMap/./node_modules/ol/render/webgl/constants.js","webpack://TimberFlowFormMap/./node_modules/ol/render/webgl/utils.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/webgl/PointsLayer.js","webpack://TimberFlowFormMap/./node_modules/ol/worker/webgl.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Heatmap.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/canvas/VectorTileLayer.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/VectorTile.js","webpack://TimberFlowFormMap/./node_modules/ol-mapbox-style/dist/index.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/MapboxVector.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/canvas/VectorImageLayer.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/VectorImage.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/PaletteTexture.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/BaseTileRepresentation.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/TileTexture.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/webgl/TileLayerBase.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/webgl/TileLayer.js","webpack://TimberFlowFormMap/./node_modules/ol/style/expressions.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/ShaderBuilder.js","webpack://TimberFlowFormMap/./node_modules/ol/webgl/styleparser.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/WebGLPoints.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/WebGLTile.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Base.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/BaseTile.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/BaseVector.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/geodesic.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Graticule.js","webpack://TimberFlowFormMap/./node_modules/ol/render.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Group.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/BaseImage.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Image.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Layer.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Property.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Tile.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/TileProperty.js","webpack://TimberFlowFormMap/./node_modules/ol/layer/Vector.js","webpack://TimberFlowFormMap/./node_modules/ol/loadingstrategy.js","webpack://TimberFlowFormMap/./node_modules/ol/math.js","webpack://TimberFlowFormMap/./node_modules/ol/net.js","webpack://TimberFlowFormMap/./node_modules/ol/obj.js","webpack://TimberFlowFormMap/./node_modules/ol/pointer/EventType.js","webpack://TimberFlowFormMap/./node_modules/ol/proj/epsg3857.js","webpack://TimberFlowFormMap/./node_modules/ol/proj/epsg4326.js","webpack://TimberFlowFormMap/./node_modules/ol/proj/projections.js","webpack://TimberFlowFormMap/./node_modules/ol/proj.js","webpack://TimberFlowFormMap/./node_modules/ol/proj/Projection.js","webpack://TimberFlowFormMap/./node_modules/ol/proj/Units.js","webpack://TimberFlowFormMap/./node_modules/ol/proj/proj4.js","webpack://TimberFlowFormMap/./node_modules/ol/proj/transforms.js","webpack://TimberFlowFormMap/./node_modules/ol/render/Event.js","webpack://TimberFlowFormMap/./node_modules/ol/render/EventType.js","webpack://TimberFlowFormMap/./node_modules/ol/render/Feature.js","webpack://TimberFlowFormMap/./node_modules/ol/render/VectorContext.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/Builder.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/ImageBuilder.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/LineStringBuilder.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/PolygonBuilder.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/BuilderGroup.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/textpath.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/Executor.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/ExecutorGroup.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/Immediate.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/Instruction.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/linechunk.js","webpack://TimberFlowFormMap/./node_modules/ol/geom/flat/straightchunk.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/TextBuilder.js","webpack://TimberFlowFormMap/./node_modules/ol/render/canvas/hitdetect.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/Layer.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/canvas/ImageLayer.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/canvas/Layer.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/canvas/TileLayer.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/canvas/VectorLayer.js","webpack://TimberFlowFormMap/./node_modules/ol/renderer/vector.js","webpack://TimberFlowFormMap/./node_modules/ol/reproj.js","webpack://TimberFlowFormMap/./node_modules/ol/reproj/DataTile.js","webpack://TimberFlowFormMap/./node_modules/ol/reproj/Tile.js","webpack://TimberFlowFormMap/./node_modules/ol/reproj/Triangulation.js","webpack://TimberFlowFormMap/./node_modules/ol/reproj/common.js","webpack://TimberFlowFormMap/./node_modules/ol/rotationconstraint.js","webpack://TimberFlowFormMap/./node_modules/ol/size.js","webpack://TimberFlowFormMap/./node_modules/ol/source/BingMaps.js","webpack://TimberFlowFormMap/./node_modules/ol/source/XYZ.js","webpack://TimberFlowFormMap/./node_modules/ol/source/CartoDB.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Cluster.js","webpack://TimberFlowFormMap/./node_modules/ol/source/DataTile.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/compression/index.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/pool.js","webpack://TimberFlowFormMap/./node_modules/@petamoriken/float16/src/_util/primordials.mjs","webpack://TimberFlowFormMap/./node_modules/@petamoriken/float16/src/_util/arrayIterator.mjs","webpack://TimberFlowFormMap/./node_modules/@petamoriken/float16/src/_util/converter.mjs","webpack://TimberFlowFormMap/./node_modules/@petamoriken/float16/src/DataView.mjs","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/resample.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/geotiffimage.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/rgb.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/dataview64.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/dataslice.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/httputils.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/basesource.js","webpack://TimberFlowFormMap/./node_modules/quick-lru/index.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/utils.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/blockedsource.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/client/base.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/client/fetch.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/client/xhr.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/client/http.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/remote.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/source/filereader.js","webpack://TimberFlowFormMap/./node_modules/geotiff/dist-module/geotiff.js","webpack://TimberFlowFormMap/./node_modules/ol/source/GeoTIFF.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Zoomify.js","webpack://TimberFlowFormMap/./node_modules/ol/source/IIIF.js","webpack://TimberFlowFormMap/./node_modules/ol/reproj/Image.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Image.js","webpack://TimberFlowFormMap/./node_modules/ol/uri.js","webpack://TimberFlowFormMap/./node_modules/ol/source/ImageArcGISRest.js","webpack://TimberFlowFormMap/./node_modules/ol/source/ImageCanvas.js","webpack://TimberFlowFormMap/./node_modules/ol/source/ImageMapGuide.js","webpack://TimberFlowFormMap/./node_modules/ol/source/ImageStatic.js","webpack://TimberFlowFormMap/./node_modules/ol/source/wms.js","webpack://TimberFlowFormMap/./node_modules/ol/source/ImageWMS.js","webpack://TimberFlowFormMap/./node_modules/ol/source/ogcTileUtil.js","webpack://TimberFlowFormMap/./node_modules/ol/source/OGCMapTile.js","webpack://TimberFlowFormMap/./node_modules/ol/source/OGCVectorTile.js","webpack://TimberFlowFormMap/./node_modules/ol/source/OSM.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Raster.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Stamen.js","webpack://TimberFlowFormMap/./node_modules/ol/source/TileArcGISRest.js","webpack://TimberFlowFormMap/./node_modules/ol/source/TileDebug.js","webpack://TimberFlowFormMap/./node_modules/ol/source/TileWMS.js","webpack://TimberFlowFormMap/./node_modules/ol/source/UTFGrid.js","webpack://TimberFlowFormMap/./node_modules/ol/source/WMTS.js","webpack://TimberFlowFormMap/./node_modules/ol/source.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Source.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Tile.js","webpack://TimberFlowFormMap/./node_modules/ol/source/TileEventType.js","webpack://TimberFlowFormMap/./node_modules/ol/source/TileImage.js","webpack://TimberFlowFormMap/./node_modules/ol/source/TileJSON.js","webpack://TimberFlowFormMap/./node_modules/ol/source/UrlTile.js","webpack://TimberFlowFormMap/./node_modules/ol/source/Vector.js","webpack://TimberFlowFormMap/./node_modules/ol/source/VectorEventType.js","webpack://TimberFlowFormMap/./node_modules/ol/source/VectorTile.js","webpack://TimberFlowFormMap/./node_modules/ol/sphere.js","webpack://TimberFlowFormMap/./node_modules/ol/string.js","webpack://TimberFlowFormMap/./node_modules/ol/structs/LRUCache.js","webpack://TimberFlowFormMap/./node_modules/ol/structs/RBush.js","webpack://TimberFlowFormMap/./node_modules/ol/style/Circle.js","webpack://TimberFlowFormMap/./node_modules/ol/style/Fill.js","webpack://TimberFlowFormMap/./node_modules/ol/style/Icon.js","webpack://TimberFlowFormMap/./node_modules/ol/style/IconImage.js","webpack://TimberFlowFormMap/./node_modules/ol/style/IconImageCache.js","webpack://TimberFlowFormMap/./node_modules/ol/style/Image.js","webpack://TimberFlowFormMap/./node_modules/ol/style/RegularShape.js","webpack://TimberFlowFormMap/./node_modules/ol/style/Stroke.js","webpack://TimberFlowFormMap/./node_modules/ol/style/Style.js","webpack://TimberFlowFormMap/./node_modules/ol/style/Text.js","webpack://TimberFlowFormMap/./node_modules/ol/style/flat.js","webpack://TimberFlowFormMap/./node_modules/ol/tilecoord.js","webpack://TimberFlowFormMap/./node_modules/ol/tilegrid.js","webpack://TimberFlowFormMap/./node_modules/ol/tilegrid/TileGrid.js","webpack://TimberFlowFormMap/./node_modules/ol/tilegrid/common.js","webpack://TimberFlowFormMap/./node_modules/ol/tileurlfunction.js","webpack://TimberFlowFormMap/./node_modules/ol/transform.js","webpack://TimberFlowFormMap/./node_modules/ol/util.js","webpack://TimberFlowFormMap/webpack/bootstrap","webpack://TimberFlowFormMap/webpack/runtime/compat get default export","webpack://TimberFlowFormMap/webpack/runtime/define property getters","webpack://TimberFlowFormMap/webpack/runtime/ensure chunk","webpack://TimberFlowFormMap/webpack/runtime/get javascript chunk filename","webpack://TimberFlowFormMap/webpack/runtime/get mini-css chunk filename","webpack://TimberFlowFormMap/webpack/runtime/global","webpack://TimberFlowFormMap/webpack/runtime/hasOwnProperty shorthand","webpack://TimberFlowFormMap/webpack/runtime/make namespace object","webpack://TimberFlowFormMap/webpack/runtime/publicPath","webpack://TimberFlowFormMap/webpack/runtime/jsonp chunk loading","webpack://TimberFlowFormMap/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[\"TimberFlowFormMap\"] = factory();\n\telse\n\t\troot[\"TimberFlowFormMap\"] = factory();\n})(self, () => {\nreturn ","var inProgress = {};\nvar dataWebpackPrefix = \"TimberFlowFormMap:\";\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}])}));","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","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 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","export default 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}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","export default 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}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./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}\nexport default function _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}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _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}","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n var date = toDate(dirtyDate);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\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","/**\n * FastPriorityQueue.js : a fast heap-based priority queue in JavaScript.\n * (c) the authors\n * Licensed under the Apache License, Version 2.0.\n *\n * Speed-optimized heap-based priority queue for modern browsers and JavaScript engines.\n *\n * Usage :\n Installation (in shell, if you use node):\n $ npm install fastpriorityqueue\n\n Running test program (in JavaScript):\n\n // var FastPriorityQueue = require(\"fastpriorityqueue\");// in node\n var x = new FastPriorityQueue();\n x.add(1);\n x.add(0);\n x.add(5);\n x.add(4);\n x.add(3);\n x.peek(); // should return 0, leaves x unchanged\n x.size; // should return 5, leaves x unchanged\n while(!x.isEmpty()) {\n console.log(x.poll());\n } // will print 0 1 3 4 5\n x.trim(); // (optional) optimizes memory usage\n */\n'use strict';\n\nvar defaultcomparator = function(a, b) {\n return a < b;\n};\n\n\n// construct a new priority queue\n// the provided comparator function should take a, b and return *true* when a < b\nfunction FastPriorityQueue(comparator) {\n if (!(this instanceof FastPriorityQueue)) return new FastPriorityQueue(comparator);\n this.array = [];\n this.size = 0;\n this.compare = comparator || defaultcomparator;\n}\n\n// copy the priority queue into another, and return it. Queue items are shallow-copied.\n// Runs in `O(n)` time.\nFastPriorityQueue.prototype.clone = function() {\n var fpq = new FastPriorityQueue(this.compare);\n fpq.size = this.size;\n fpq.array = this.array.slice(0, this.size);\n return fpq;\n};\n\n// add an element into the queue\n// runs in `O(log n)` time\nFastPriorityQueue.prototype.add = function(myval) {\n var i = this.size;\n this.array[this.size] = myval;\n this.size += 1;\n var p;\n var ap;\n while (i > 0) {\n p = (i - 1) >> 1;\n ap = this.array[p];\n if (!this.compare(myval, ap)) {\n break;\n }\n this.array[i] = ap;\n i = p;\n }\n this.array[i] = myval;\n};\n\n// replace the content of the heap by provided array and \"heapify it\"\nFastPriorityQueue.prototype.heapify = function(arr) {\n this.array = arr;\n this.size = arr.length;\n var i;\n for (i = this.size >> 1; i >= 0; i--) {\n this._percolateDown(i);\n }\n};\n\n// for internal use\nFastPriorityQueue.prototype._percolateUp = function(i, force) {\n var myval = this.array[i];\n var p;\n var ap;\n while (i > 0) {\n p = (i - 1) >> 1;\n ap = this.array[p];\n // force will skip the compare\n if (!force && !this.compare(myval, ap)) {\n break;\n }\n this.array[i] = ap;\n i = p;\n }\n this.array[i] = myval;\n};\n\n// for internal use\nFastPriorityQueue.prototype._percolateDown = function(i) {\n var size = this.size;\n var hsize = this.size >>> 1;\n var ai = this.array[i];\n var l;\n var r;\n var bestc;\n while (i < hsize) {\n l = (i << 1) + 1;\n r = l + 1;\n bestc = this.array[l];\n if (r < size) {\n if (this.compare(this.array[r], bestc)) {\n l = r;\n bestc = this.array[r];\n }\n }\n if (!this.compare(bestc, ai)) {\n break;\n }\n this.array[i] = bestc;\n i = l;\n }\n this.array[i] = ai;\n};\n\n// internal\n// _removeAt(index) will remove the item at the given index from the queue,\n// retaining balance. returns the removed item, or undefined if nothing is removed.\nFastPriorityQueue.prototype._removeAt = function(index) {\n if (index > this.size - 1 || index < 0) return undefined;\n\n // impl1:\n //this.array.splice(index, 1);\n //this.heapify(this.array);\n // impl2:\n this._percolateUp(index, true);\n return this.poll();\n};\n\n// remove(myval) will remove an item matching the provided value from the\n// queue, checked for equality by using the queue's comparator.\n// return true if removed, false otherwise.\nFastPriorityQueue.prototype.remove = function(myval) {\n for (var i = 0; i < this.size; i++) {\n if (!this.compare(this.array[i], myval) && !this.compare(myval, this.array[i])) {\n // items match, comparator returns false both ways, remove item\n this._removeAt(i);\n return true;\n }\n }\n return false;\n};\n\n// removeOne(callback) will execute the callback function for each item of the queue\n// and will remove the first item for which the callback will return true.\n// return the removed item, or undefined if nothing is removed.\nFastPriorityQueue.prototype.removeOne = function(callback) {\n if (typeof callback !== \"function\") {\n return undefined;\n }\n for (var i = 0; i < this.size; i++) {\n if (callback(this.array[i])) {\n return this._removeAt(i);\n }\n }\n};\n\n// remove(callback[, limit]) will execute the callback function for each item of\n// the queue and will remove each item for which the callback returns true, up to\n// a max limit of removed items if specified or no limit if unspecified.\n// return an array containing the removed items.\n// The callback function should be a pure function.\nFastPriorityQueue.prototype.removeMany = function(callback, limit) {\n // Skip unnecessary processing for edge cases\n if (typeof callback !== \"function\" || this.size < 1) {\n return [];\n }\n limit = limit ? Math.min(limit, this.size) : this.size;\n\n // Prepare the results container to hold up to the results limit\n var resultSize = 0;\n var result = new Array(limit);\n\n // Prepare a temporary array to hold items we'll traverse through and need to keep\n var tmpSize = 0;\n var tmp = new Array(this.size);\n\n while (resultSize < limit && !this.isEmpty()) {\n // Dequeue items into either the results or our temporary array\n var item = this.poll();\n if (callback(item)) {\n result[resultSize++] = item;\n } else {\n tmp[tmpSize++] = item;\n }\n }\n // Update the result array with the exact number of results\n result.length = resultSize;\n\n // Re-add all the items we can keep\n var i = 0;\n while (i < tmpSize) {\n this.add(tmp[i++]);\n }\n\n return result;\n};\n\n// Look at the top of the queue (one of the smallest elements) without removing it\n// executes in constant time\n//\n// Calling peek on an empty priority queue returns\n// the \"undefined\" value.\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/undefined\n//\nFastPriorityQueue.prototype.peek = function() {\n if (this.size == 0) return undefined;\n return this.array[0];\n};\n\n// remove the element on top of the heap (one of the smallest elements)\n// runs in logarithmic time\n//\n// If the priority queue is empty, the function returns the\n// \"undefined\" value.\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/undefined\n//\n// For long-running and large priority queues, or priority queues\n// storing large objects, you may want to call the trim function\n// at strategic times to recover allocated memory.\nFastPriorityQueue.prototype.poll = function() {\n if (this.size == 0) return undefined;\n var ans = this.array[0];\n if (this.size > 1) {\n this.array[0] = this.array[--this.size];\n this._percolateDown(0);\n } else {\n this.size -= 1;\n }\n return ans;\n};\n\n// This function adds the provided value to the heap, while removing\n// and returning one of the smallest elements (like poll). The size of the queue\n// thus remains unchanged.\nFastPriorityQueue.prototype.replaceTop = function(myval) {\n if (this.size == 0) return undefined;\n var ans = this.array[0];\n this.array[0] = myval;\n this._percolateDown(0);\n return ans;\n};\n\n// recover unused memory (for long-running priority queues)\nFastPriorityQueue.prototype.trim = function() {\n this.array = this.array.slice(0, this.size);\n};\n\n// Check whether the heap is empty\nFastPriorityQueue.prototype.isEmpty = function() {\n return this.size === 0;\n};\n\n// iterate over the items in order, pass a callback that receives (item, index) as args.\n// TODO once we transpile, uncomment\n// if (Symbol && Symbol.iterator) {\n// FastPriorityQueue.prototype[Symbol.iterator] = function*() {\n// if (this.isEmpty()) return;\n// var fpq = this.clone();\n// while (!fpq.isEmpty()) {\n// yield fpq.poll();\n// }\n// };\n// }\nFastPriorityQueue.prototype.forEach = function(callback) {\n if (this.isEmpty() || typeof callback != 'function') return;\n var i = 0;\n var fpq = this.clone();\n while (!fpq.isEmpty()) {\n callback(fpq.poll(), i++);\n }\n};\n\n// return the k 'smallest' elements of the queue as an array,\n// runs in O(k log k) time, the elements are not removed\n// from the priority queue.\nFastPriorityQueue.prototype.kSmallest = function(k) {\n if ((this.size == 0) || (k<=0)) return [];\n k = Math.min(this.size, k);\n const newSize = Math.min(this.size, (2 ** (k - 1)) + 1);\n if (newSize < 2) { return [this.peek()] }\n\n const fpq = new FastPriorityQueue(this.compare);\n fpq.size = newSize;\n fpq.array = this.array.slice(0, newSize);\n\n const smallest = new Array(k);\n for (let i = 0; i < k; i++) {\n smallest[i] = fpq.poll();\n }\n return smallest;\n}\n\nmodule.exports = FastPriorityQueue;\n","export default __webpack_public_path__ + \"assets/img/LVM_GEO_logo_128.jpg\";","export default __webpack_public_path__ + \"assets/basemaps/mamma.png\";","export default __webpack_public_path__ + \"assets/basemaps/orto2.png\";","export default __webpack_public_path__ + \"assets/basemaps/topo10.png\";","/*! 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","/*\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: function(v) {\n self.a = 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.militargeographische_institut = {\n towgs84: \"577.326,90.129,463.919,5.137,1.474,5.297,2.4232\",\n ellipse: \"bessel\",\n datumName: \"Militar-Geographische Institut\"\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 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 gridOffset += 176 + subHeader.gridNodeCount * 16;\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 outer:\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 subgrids = grid.grid.subgrids;\n for (var j = 0, jj = subgrids.length; j < jj; j++) {\n var subgrid = subgrids[j];\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 outer;\n }\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 (point && !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\", \"Gauss Kruger\", \"Gauss_Kruger\", \"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';\nimport hypot from '../common/hypot';\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 = hypot(p.x, 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\", \"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\n // setting default parameters\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\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 && Math.abs(Math.cos(this.lat_ts)) > EPSLN) {\n // When k0 is 1 (default value) and lat_ts is a vaild number and lat0 is at a pole and lat_ts is not at a pole\n // Recalculate k0 using formula 21-35 from p161 of Snyder, 1987\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)\", \"Polar_Stereographic\"];\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","/**\n * Copyright 2018 Bernie Jenny, Monash University, Melbourne, Australia.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Equal Earth is a projection inspired by the Robinson projection, but unlike\n * the Robinson projection retains the relative size of areas. The projection\n * was designed in 2018 by Bojan Savric, Tom Patterson and Bernhard Jenny.\n *\n * Publication:\n * Bojan Savric, Tom Patterson & Bernhard Jenny (2018). The Equal Earth map\n * projection, International Journal of Geographical Information Science,\n * DOI: 10.1080/13658816.2018.1504949\n *\n * Code released August 2018\n * Ported to JavaScript and adapted for mapshaper-proj by Matthew Bloch August 2018\n * Modified for proj4js by Andreas Hocevar by Andreas Hocevar March 2024\n */\n\nimport adjust_lon from \"../common/adjust_lon\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = Math.sqrt(3) / 2.0;\n\nexport function init() {\n this.es = 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n}\n\nexport function forward(p) {\n var lam = adjust_lon(p.x - this.long0);\n var phi = p.y;\n var paramLat = Math.asin(M * Math.sin(phi)),\n paramLatSq = paramLat * paramLat,\n paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n p.x = lam * Math.cos(paramLat) /\n (M * (A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq)));\n p.y = paramLat * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq));\n\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 p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n var EPS = 1e-9,\n NITER = 12,\n paramLat = p.y,\n paramLatSq, paramLatPow6, fy, fpy, dlat, i;\n\n for (i = 0; i < NITER; ++i) {\n paramLatSq = paramLat * paramLat;\n paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n fy = paramLat * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq)) - p.y;\n fpy = A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq);\n paramLat -= dlat = fy / fpy;\n if (Math.abs(dlat) < EPS) {\n break;\n }\n }\n paramLatSq = paramLat * paramLat;\n paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;\n p.x = M * p.x * (A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq)) /\n Math.cos(paramLat);\n p.y = Math.asin(Math.sin(paramLat) / M);\n\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"eqearth\", \"Equal Earth\", \"Equal_Earth\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nimport tpers from './lib/projections/tpers';\nimport geos from './lib/projections/geos';\nimport eqearth from './lib/projections/eqearth';\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 proj4.Proj.projections.add(eqearth);\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","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addQuarters\"),require(\"date-fns/addYears\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subQuarters\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/endOfYear\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-dom\"),require(\"react-popper\"),require(\"date-fns/set\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addQuarters\",\"date-fns/addYears\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subQuarters\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/endOfYear\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-dom\",\"react-popper\",\"date-fns/set\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addQuarters,e.addYears,e.subDays,e.subWeeks,e.subMonths,e.subQuarters,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,e.endOfMonth,e.endOfYear,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactDOM,e.ReactPopper,e.set)}(this,(function(e,t,r,a,n,o,s,i,p,l,c,d,u,f,h,m,y,v,D,g,k,w,b,S,C,_,M,P,E,N,x,Y,O,I,T,R,L,F,A,W,q,K,B,Q,H,j,V,U,z,$,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe,le){\"use strict\";function ce(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=ce(t),ue=ce(a),fe=ce(n),he=ce(o),me=ce(s),ye=ce(i),ve=ce(p),De=ce(l),ge=ce(c),ke=ce(d),we=ce(u),be=ce(f),Se=ce(h),Ce=ce(m),_e=ce(y),Me=ce(v),Pe=ce(D),Ee=ce(g),Ne=ce(k),xe=ce(w),Ye=ce(b),Oe=ce(S),Ie=ce(C),Te=ce(_),Re=ce(M),Le=ce(P),Fe=ce(E),Ae=ce(N),We=ce(x),qe=ce(Y),Ke=ce(O),Be=ce(I),Qe=ce(T),He=ce(R),je=ce(L),Ve=ce(F),Ue=ce(A),ze=ce(W),$e=ce(q),Ge=ce(K),Je=ce(B),Xe=ce(Q),Ze=ce(H),et=ce(j),tt=ce(U),rt=ce(z),at=ce($),nt=ce(G),ot=ce(J),st=ce(X),it=ce(Z),pt=ce(ee),lt=ce(te),ct=ce(re),dt=ce(ae),ut=ce(ne),ft=ce(oe),ht=ce(se),mt=ce(ie),yt=ce(le);function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Dt(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,a=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.excludeDateIntervals,s=t.includeDates,i=t.includeDateIntervals,p=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Jt(e,t)}))||o&&o.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||s&&!s.some((function(t){return Jt(e,t)}))||i&&!i.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||p&&!p(At(e))||!1}function or(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates,a=t.excludeDateIntervals;return a&&a.length>0?a.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})})):r&&r.some((function(t){return Jt(e,t)}))||!1}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:Je.default(r),maxDate:tt.default(a)})||n&&n.some((function(t){return $t(e,t)}))||o&&!o.some((function(t){return $t(e,t)}))||s&&!s(At(e))||!1}function ir(e,t,r,a){var n=Le.default(e),o=Te.default(e),s=Le.default(t),i=Te.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Gt(e,t)}))||o&&!o.some((function(t){return Gt(e,t)}))||s&&!s(At(e))||!1}function lr(e,t,r){if(!he.default(t)||!he.default(r))return!1;var a=Le.default(t),n=Le.default(r);return a<=e&&n>=e}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate,i=new Date(e,0,1);return ur(i,{minDate:Ze.default(r),maxDate:rt.default(a)})||n&&n.some((function(e){return zt(i,e)}))||o&&!o.some((function(e){return zt(i,e)}))||s&&!s(At(i))||!1}function dr(e,t,r,a){var n=Le.default(e),o=Re.default(e),s=Le.default(t),i=Re.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function ur(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&Ve.default(e,r)<0||a&&Ve.default(e,a)>0}function fr(e,t){return t.some((function(t){return xe.default(t)===xe.default(e)&&Ne.default(t)===Ne.default(e)}))}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&fr(e,r)||a&&!fr(e,a)||n&&!n(e)||!1}function mr(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=At(),s=qe.default(We.default(o,Ne.default(e)),xe.default(e)),i=qe.default(We.default(o,Ne.default(r)),xe.default(r)),p=qe.default(We.default(o,Ne.default(a)),xe.default(a));try{n=!ct.default(s,{start:i,end:p})}catch(e){n=!1}return n}function yr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=_e.default(e,1);return r&&Ue.default(r,n)>0||a&&a.every((function(e){return Ue.default(e,n)>0}))||!1}function vr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=ke.default(e,1);return r&&Ue.default(n,r)>0||a&&a.every((function(e){return Ue.default(n,e)>0}))||!1}function Dr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Pe.default(e,1);return r&&ze.default(r,n)>0||a&&a.every((function(e){return ze.default(e,n)>0}))||!1}function gr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=be.default(e,1);return r&&ze.default(n,r)>0||a&&a.every((function(e){return ze.default(n,e)>0}))||!1}function kr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)>=0}));return He.default(a)}return r?He.default(r):t}function wr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)<=0}));return je.default(a)}return r?je.default(r):t}function br(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--holidays\",r=new Map;return e.forEach((function(e){var a=e.date,n=e.holidayName;if(fe.default(a)){var o=qt(a,\"MM.dd.yyyy\"),s=r.get(o)||{};if(!(\"className\"in s)||s.className!==t||(i=s.holidayNames,p=[n],i.length!==p.length||!i.every((function(e,t){return e===p[t]})))){var i,p;s.className=t;var l=s.holidayNames;s.holidayNames=l?[].concat(xt(l),[n]):[n],r.set(o,s)}}})),r}function Cr(e,t,r,a,n){for(var o=n.length,s=[],i=0;i1&&void 0!==arguments[1]?arguments[1]:Lt,r=Math.ceil(Le.default(e)/t)*t;return{startPeriod:r-(t-1),endPeriod:r}}function Pr(e){var t=e.getSeconds(),r=e.getMilliseconds();return dt.default(e.getTime()-1e3*t-r)}function Er(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Le.default(r)<=s),a&&i&&(i=Le.default(a)>=s),i&&n.push(s)}return n}var Nr=function(e){_t(a,e);var r=Nt(a);function a(e){var n;kt(this,a),St(Et(n=r.call(this,e)),\"renderOptions\",(function(){var e=n.props.year,t=n.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:n.onChange.bind(Et(n),t),\"aria-selected\":e===t?\"true\":void 0},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=n.props.minDate?Le.default(n.props.minDate):null,a=n.props.maxDate?Le.default(n.props.maxDate):null;return a&&n.state.yearsList.find((function(e){return e===a}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:n.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&n.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:n.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),St(Et(n),\"onChange\",(function(e){n.props.onChange(e)})),St(Et(n),\"handleClickOutside\",(function(){n.props.onCancel()})),St(Et(n),\"shiftYears\",(function(e){var t=n.state.yearsList.map((function(t){return t+e}));n.setState({yearsList:t})})),St(Et(n),\"incrementYears\",(function(){return n.shiftYears(1)})),St(Et(n),\"decrementYears\",(function(){return n.shiftYears(-1)}));var o=e.yearDropdownItemNumber,s=e.scrollableYearDropdown,i=o||(s?10:5);return n.state={yearsList:Er(n.props.year,i,n.props.minDate,n.props.maxDate)},n.dropdownRef=t.createRef(),n}return bt(a,[{key:\"componentDidMount\",value:function(){var e=this.dropdownRef.current;if(e){var t=e.children?Array.from(e.children):null,r=t?t.find((function(e){return e.ariaSelected})):null;e.scrollTop=r?r.offsetTop+(r.clientHeight-e.clientHeight)/2:(e.scrollHeight-e.clientHeight)/2}}},{key:\"render\",value:function(){var e=ue.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e,ref:this.dropdownRef},this.renderOptions())}}]),a}(de.default.Component),xr=ht.default(Nr),Yr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0?n.get(o).holidayNames.join(\", \"):\"\"})),St(Et(e),\"getTabIndex\",(function(t,r){var a=t||e.props.selected,n=r||e.props.preSelection;return(!e.props.showWeekPicker||!e.props.showWeekNumber&&e.isStartOfWeek())&&(e.isKeyboardSelected()||e.isSameDay(a)&&Jt(n,a))?0:-1})),St(Et(e),\"handleFocusDay\",(function(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=!1;0===e.getTabIndex()&&!r.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(a=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(a=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(a=!0),e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()&&(a=!1),e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()&&(a=!1)),a&&(null===(t=e.dayEl.current)||void 0===t||t.focus({preventScroll:!0}))})),St(Et(e),\"renderDayContents\",(function(){return e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()||e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()?null:e.props.renderDayContents?e.props.renderDayContents(Oe.default(e.props.day),e.props.day):Oe.default(e.props.day)})),St(Et(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"option\",title:e.getTitle(),\"aria-disabled\":e.isDisabled(),\"aria-current\":e.isCurrentDay()?\"date\":void 0,\"aria-selected\":e.isSelected()||e.isInRange()},e.renderDayContents(),\"\"!==e.getTitle()&&de.default.createElement(\"span\",{className:\"holiday-overlay\"},e.getTitle()))})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),qr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&Jt(e.props.date,e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement&&document.activeElement.classList.contains(\"react-datepicker__week-number\")&&(r=!0)),r&&e.weekNumberEl.current&&e.weekNumberEl.current.focus({preventScroll:!0})})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusWeekNumber()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusWeekNumber(e)}},{key:\"render\",value:function(){var e=this.props,t=e.weekNumber,r=e.ariaLabelPrefix,a=void 0===r?\"week \":r,n={\"react-datepicker__week-number\":!0,\"react-datepicker__week-number--clickable\":!!e.onClick,\"react-datepicker__week-number--selected\":Jt(this.props.date,this.props.selected),\"react-datepicker__week-number--keyboard-selected\":this.isKeyboardSelected()};return de.default.createElement(\"div\",{ref:this.weekNumberEl,className:ue.default(n),\"aria-label\":\"\".concat(a,\" \").concat(this.props.weekNumber),onClick:this.handleClick,onKeyDown:this.handleOnKeyDown,tabIndex:this.getTabIndex()},t)}}],[{key:\"defaultProps\",get:function(){return{ariaLabelPrefix:\"week \"}}}]),r}(de.default.Component),Kr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o=6,i=!r&&!e.isWeekInMonth(o);if(s||i){if(!e.props.peekNextMonth)break;n=!0}}return t})),St(Et(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Ht(Ke.default(e.props.day,r)),t)})),St(Et(e),\"onMonthMouseEnter\",(function(t){e.handleDayMouseEnter(Ht(Ke.default(e.props.day,t)))})),St(Et(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),St(Et(e),\"onMonthKeyDown\",(function(t,r){var a=e.props,n=a.selected,o=a.preSelection,s=a.disabledKeyboardNavigation,i=a.showTwoColumnMonthYearPicker,p=a.showFourColumnMonthYearPicker,l=a.setPreSelection,c=t.key;if(\"Tab\"!==c&&t.preventDefault(),!s){var d=Vr(p,i),u=jr[d].verticalNavigationOffset,f=jr[d].grid;switch(c){case\"Enter\":e.onMonthClick(t,r),l(n);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,ke.default(o,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,_e.default(o,1));break;case\"ArrowUp\":e.handleMonthNavigation(f[0].includes(r)?r+12-u:r-u,_e.default(o,u));break;case\"ArrowDown\":e.handleMonthNavigation(f[f.length-1].includes(r)?r-12+u:r+u,ke.default(o,u))}}})),St(Et(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(Vt(Be.default(e.props.day,r)),t)})),St(Et(e),\"onQuarterMouseEnter\",(function(t){e.handleDayMouseEnter(Vt(Be.default(e.props.day,t)))})),St(Et(e),\"handleQuarterNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.QUARTER_REFS[t-1].current&&e.QUARTER_REFS[t-1].current.focus())})),St(Et(e),\"onQuarterKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onQuarterClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleQuarterNavigation(4===r?1:r+1,we.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleQuarterNavigation(1===r?4:r-1,Me.default(e.props.preSelection,1))}})),St(Et(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,c=r.monthClassName,d=r.excludeDates,u=r.includeDates,f=c?c(Ke.default(a,t)):void 0,h=Ke.default(a,t);return ue.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),f,{\"react-datepicker__month-text--disabled\":(i||p||d||u)&&sr(h,e.props),\"react-datepicker__month-text--selected\":e.isSelectedMonth(a,t,s),\"react-datepicker__month-text--keyboard-selected\":!e.props.disabledKeyboardNavigation&&Te.default(l)===t,\"react-datepicker__month-text--in-selecting-range\":e.isInSelectingRangeMonth(t),\"react-datepicker__month-text--in-range\":ir(n,o,t,a),\"react-datepicker__month-text--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month-text--range-end\":e.isRangeEndMonth(t),\"react-datepicker__month-text--selecting-range-start\":e.isSelectingMonthRangeStart(t),\"react-datepicker__month-text--selecting-range-end\":e.isSelectingMonthRangeEnd(t),\"react-datepicker__month-text--today\":e.isCurrentMonth(a,t)})})),St(Et(e),\"getTabIndex\",(function(t){var r=Te.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Et(e),\"getQuarterTabIndex\",(function(t){var r=Re.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Et(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.chooseDayAriaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=Ke.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(qt(p,\"MMMM yyyy\"))})),St(Et(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,c=r.disabledKeyboardNavigation;return ue.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter-text--disabled\":(i||p)&&pr(Be.default(a,t),e.props),\"react-datepicker__quarter-text--selected\":e.isSelectedQuarter(a,t,s),\"react-datepicker__quarter-text--keyboard-selected\":!c&&Re.default(l)===t,\"react-datepicker__quarter-text--in-selecting-range\":e.isInSelectingRangeQuarter(t),\"react-datepicker__quarter-text--in-range\":dr(n,o,t,a),\"react-datepicker__quarter-text--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter-text--range-end\":e.isRangeEndQuarter(t)})})),St(Et(e),\"getMonthContent\",(function(t){var r=e.props,a=r.showFullMonthYearPicker,n=r.renderMonthContent,o=r.locale,s=r.day,i=ar(t,o),p=rr(t,o);return n?n(t,i,p,s):a?p:i})),St(Et(e),\"getQuarterContent\",(function(t){var r=e.props,a=r.renderQuarterContent,n=function(e,t){return qt(Be.default(At(),e),\"QQQ\",t)}(t,r.locale);return a?a(t,n):n})),St(Et(e),\"renderMonths\",(function(){var t=e.props,r=t.showTwoColumnMonthYearPicker,a=t.showFourColumnMonthYearPicker,n=t.day,o=t.selected;return jr[Vr(a,r)].grid.map((function(t,r){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:r},t.map((function(t,r){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:r,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},onMouseEnter:function(){return e.onMonthMouseEnter(t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"option\",\"aria-label\":e.getAriaLabel(t),\"aria-current\":e.isCurrentMonth(n,t)?\"date\":void 0,\"aria-selected\":e.isSelectedMonth(n,t,o)},e.getMonthContent(t))})))}))})),St(Et(e),\"renderQuarters\",(function(){var t=e.props,r=t.day,a=t.selected;return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,n){return de.default.createElement(\"div\",{key:n,ref:e.QUARTER_REFS[n],role:\"option\",onClick:function(r){e.onQuarterClick(r,t)},onKeyDown:function(r){e.onQuarterKeyDown(r,t)},onMouseEnter:function(){return e.onQuarterMouseEnter(t)},className:e.getQuarterClassNames(t),\"aria-selected\":e.isSelectedQuarter(r,t,a),tabIndex:e.getQuarterTabIndex(t),\"aria-current\":e.isCurrentQuarter(r,t)?\"date\":void 0},e.getQuarterContent(t))})))})),St(Et(e),\"getClassNames\",(function(){var t=e.props,r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker,i=t.showWeekPicker;return ue.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s},{\"react-datepicker__weekPicker\":i})})),e}return bt(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(qt(a,\"yyyy-MM\")),role:\"listbox\"},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),zr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Xr.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),St(Et(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=kr(a.props),s=wr(a.props),i=At(),p=n||r||t;return p||(o&<.default(i,o)?o:s&&pt.default(i,s)?s:i)})),St(Et(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:ke.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Et(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:_e.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Et(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Et(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),St(Et(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),St(Et(a),\"handleYearMouseEnter\",(function(e,t){a.setState({selectingDate:Qe.default(At(),t)}),a.props.onYearMouseEnter&&a.props.onYearMouseEnter(e,t)})),St(Et(a),\"handleYearMouseLeave\",(function(e,t){a.props.onYearMouseLeave&&a.props.onYearMouseLeave(e,t)})),St(Et(a),\"handleYearChange\",(function(e){a.props.onYearChange&&(a.props.onYearChange(e),a.setState({isRenderAriaLiveMessage:!0})),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Et(a),\"handleMonthChange\",(function(e){a.handleCustomMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Et(a),\"handleCustomMonthChange\",(function(e){a.props.onMonthChange&&(a.props.onMonthChange(e),a.setState({isRenderAriaLiveMessage:!0}))})),St(Et(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),St(Et(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:Qe.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Et(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:Ke.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Et(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:Qe.default(Ke.default(r,Te.default(e)),Le.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),St(Et(a),\"header\",(function(){var e=Qt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,a.props.locale,a.props.calendarStartDay),t=[];return a.props.showWeekNumbers&&t.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),t.concat([0,1,2,3,4,5,6].map((function(t){var r=De.default(e,t),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:t,className:ue.default(\"react-datepicker__day-name\",o)},n)})))})),St(Et(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(qt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return qt(e,\"EEE\",t)}(e,t):function(e,t){return qt(e,\"EEEEEE\",t)}(e,t)})),St(Et(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Pe.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Et(a),\"clearSelectingDate\",(function(){a.setState({selectingDate:null})})),St(Et(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=Dr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=Mr(jt(Pe.default(e,n)),n).endPeriod,s=r&&Le.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=yr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthButtonLabel,i=o.previousYearButtonLabel,p=a.props,l=p.previousMonthAriaLabel,c=void 0===l?\"string\"==typeof s?s:\"Previous Month\":l,d=p.previousYearAriaLabel,u=void 0===d?\"string\"==typeof i?i:\"Previous Year\":d;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?u:c},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--previous\"].join(\" \")},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel))}}})),St(Et(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:be.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Et(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=gr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=Mr(be.default(e,n),n).startPeriod,s=r&&Le.default(r);return s&&s0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},qt(e,a.props.dateFormat,a.props.locale))})),St(Et(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(Yr,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Le.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),St(Et(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Tr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Te.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),St(Et(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(Ar,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),St(Et(a),\"handleTodayButtonClick\",(function(e){a.props.onSelect(Ut(),e),a.props.setPreSelection&&a.props.setPreSelection(Ut())})),St(Et(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.handleTodayButtonClick(e)}},a.props.todayButton)})),St(Et(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Et(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=yr(a.state.date,a.props),o=vr(a.state.date,a.props),s=Dr(a.state.date,a.props),i=gr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(Dt(Dt({},a.state),{},{customHeaderCount:r,monthDate:t,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Et(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=Mr(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Le.default(e))})),St(Et(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),St(Et(a),\"renderMonths\",(function(){var e;if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var t=[],r=a.props.showPreviousMonths?a.props.monthsShown-1:0,n=_e.default(a.state.date,r),o=null!==(e=a.props.monthSelectedIn)&&void 0!==e?e:r,s=0;s0;t.push(de.default.createElement(\"div\",{key:l,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:p,i:s}),de.default.createElement(Ur,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,ariaLabelPrefix:a.props.monthAriaLabelPrefix,onChange:a.changeMonthYear,day:p,dayClassName:a.props.dayClassName,calendarStartDay:a.props.calendarStartDay,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnDayKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:s,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,highlightDates:a.props.highlightDates,holidays:a.props.holidays,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showWeekPicker:a.props.showWeekPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:c,monthShowsDuplicateDaysStart:d})))}return t}})),St(Et(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement($r,Ct({onDayClick:a.handleDayClick,selectingDate:a.state.selectingDate,clearSelectingDate:a.clearSelectingDate,date:a.state.date},a.props,{onYearMouseEnter:a.handleYearMouseEnter,onYearMouseLeave:a.handleYearMouseLeave}))):void 0})),St(Et(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement(zr,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,handleOnKeyDown:a.props.handleOnKeyDown,showTimeSelectOnly:a.props.showTimeSelectOnly})})),St(Et(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=Wt(e)&&Boolean(a.props.selected)?\"\".concat(_r(e.getHours()),\":\").concat(_r(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement(Gr,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),St(Et(a),\"renderAriaLiveRegion\",(function(){var e,t=Mr(a.state.date,a.props.yearItemNumber),r=t.startPeriod,n=t.endPeriod;return e=a.props.showYearPicker?\"\".concat(r,\" - \").concat(n):a.props.showMonthYearPicker||a.props.showQuarterYearPicker?Le.default(a.state.date):\"\".concat(rr(Te.default(a.state.date),a.props.locale),\" \").concat(Le.default(a.state.date)),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},a.state.isRenderAriaLiveMessage&&e)})),St(Et(a),\"renderChildren\",(function(){if(a.props.children)return de.default.createElement(\"div\",{className:\"react-datepicker__children-container\"},a.props.children)})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null,isRenderAriaLiveMessage:!1},a}return bt(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){var t=this;if(!this.props.preSelection||Jt(this.props.preSelection,e.preSelection)&&this.props.monthSelectedIn===e.monthSelectedIn)this.props.openToDate&&!Jt(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate});else{var r=!$t(this.state.date,this.props.preSelection);this.setState({date:this.props.preSelection},(function(){return r&&t.handleCustomMonthChange(t.state.date)}))}}},{key:\"render\",value:function(){var e=this.props.container||Jr;return de.default.createElement(\"div\",{style:{display:\"contents\"},ref:this.containerRef},de.default.createElement(e,{className:ue.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderAriaLiveRegion(),this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.renderChildren()))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:Lt}}}]),r}(de.default.Component),ea=function(e){var t=e.icon,r=e.className,a=void 0===r?\"\":r,n=e.onClick,o=\"react-datepicker__calendar-icon\";return de.default.isValidElement(t)?de.default.cloneElement(t,{className:\"\".concat(t.props.className||\"\",\" \").concat(o,\" \").concat(a),onClick:function(e){\"function\"==typeof t.props.onClick&&t.props.onClick(e),\"function\"==typeof n&&n(e)}}):\"string\"==typeof t?de.default.createElement(\"i\",{className:\"\".concat(o,\" \").concat(t,\" \").concat(a),\"aria-hidden\":\"true\",onClick:n}):de.default.createElement(\"svg\",{className:\"\".concat(o,\" \").concat(a),xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 448 512\",onClick:n},de.default.createElement(\"path\",{d:\"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"}))},ta=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return bt(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=(this.props.portalHost||document).getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),(this.props.portalHost||document.body).appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return mt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),ra=function(e){return!e.disabled&&-1!==e.tabIndex},aa=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(ra)})),St(Et(a),\"handleFocusStart\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[e.length-1].focus()})),St(Et(a),\"handleFocusEnd\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return bt(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),na=function(e){_t(r,e);var t=Nt(r);function r(){return kt(this,r),t.apply(this,arguments)}return bt(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,c=t.enableTabLoop,d=t.popperOnKeyDown,u=t.portalId,f=t.portalHost;if(!n){var h=ue.default(\"react-datepicker-popper\",r);e=de.default.createElement(pe.Popper,Ct({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(aa,{enableTabLoop:c},de.default.createElement(\"div\",{ref:t,style:r,className:h,\"data-placement\":a,onKeyDown:d},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(ta,{portalId:u,portalHost:f},e));var m=ue.default(\"react-datepicker-wrapper\",a);return de.default.createElement(pe.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(pe.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:m},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:[],popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),oa=\"react-datepicker-ignore-onclickoutside\",sa=ht.default(Zr);var ia=\"Date input not valid.\",pa=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:At()})),St(Et(a),\"modifyHolidays\",(function(){var e;return null===(e=a.props.holidays)||void 0===e?void 0:e.reduce((function(e,t){var r=new Date(t.date);return he.default(r)?[].concat(xt(e),[Dt(Dt({},t),{},{date:r})]):e}),[])})),St(Et(a),\"calcInitialState\",(function(){var e,t=a.getPreSelection(),r=kr(a.props),n=wr(a.props),o=r&<.default(t,$e.default(r))?r:n&&pt.default(t,et.default(n))?n:t;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:null!==(e=a.props.selectsRange?a.props.startDate:a.props.selected)&&void 0!==e?e:o,highlightDates:br(a.props.highlightDates),focused:!1,shouldFocusDayInline:!1,isRenderAriaLiveMessage:!1}})),St(Et(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),St(Et(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),St(Et(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),St(Et(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:ca},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),St(Et(a),\"inputOk\",(function(){return fe.default(a.state.preSelection)})),St(Et(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),St(Et(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),St(Et(a),\"sendFocusBackToInput\",(function(){a.preventFocusTimeout&&a.clearPreventFocusTimeout(),a.setState({preventFocus:!0},(function(){a.preventFocusTimeout=setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))}))})),St(Et(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),St(Et(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),St(Et(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),St(Et(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),St(Et(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),St(Et(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&(c=ut.default(o,s.slice(0,o.length),new Date)),Wt(c)||(c=new Date(o))),Wt(c)&&u?c:null));a.props.showTimeSelectOnly&&a.props.selected&&f&&!Jt(f,a.props.selected)&&(f=yt.default(a.props.selected,{hours:xe.default(f),minutes:Ne.default(f),seconds:Ee.default(f)})),!f&&n.target.value||(a.props.showWeekPicker&&(f=Qt(f,a.props.locale,a.props.calendarStartDay)),a.setSelected(f,n,!0))}})),St(Et(a),\"handleSelect\",(function(e,t,r){if(a.props.shouldCloseOnSelect&&!a.props.showTimeSelect&&a.sendFocusBackToInput(),a.props.onChangeRaw&&a.props.onChangeRaw(t),a.props.showWeekPicker&&(e=Qt(e,a.props.locale,a.props.calendarStartDay)),a.setSelected(e,t,!1,r),a.props.showDateSelect&&a.setState({isRenderAriaLiveMessage:!0}),!a.props.shouldCloseOnSelect||a.props.showTimeSelect)a.setPreSelection(e);else if(!a.props.inline){a.props.selectsRange||a.setOpen(!1);var n=a.props,o=n.startDate,s=n.endDate;!o||s||lt.default(e,o)||a.setOpen(!1)}})),St(Et(a),\"setSelected\",(function(e,t,r,n){var o=e;if(a.props.showYearPicker){if(null!==o&&cr(Le.default(o),a.props))return}else if(a.props.showMonthYearPicker){if(null!==o&&sr(o,a.props))return}else if(null!==o&&nr(o,a.props))return;var s=a.props,i=s.onChange,p=s.selectsRange,l=s.startDate,c=s.endDate;if(!Xt(a.props.selected,o)||a.props.allowSameDay||p)if(null!==o&&(!a.props.selected||r&&(a.props.showTimeSelect||a.props.showTimeSelectOnly||a.props.showTimeInput)||(o=Bt(o,{hour:xe.default(a.props.selected),minute:Ne.default(a.props.selected),second:Ee.default(a.props.selected)})),a.props.inline||a.setState({preSelection:o}),a.props.focusSelectedMonth||a.setState({monthSelectedIn:n})),p){var d=l&&!c,u=l&&c;!l&&!c?i([o,null],t):d&&(lt.default(o,l)?i([o,null],t):i([l,o],t)),u&&i([o,null],t)}else i(o,t);r||(a.props.onSelect(o,t),a.setState({inputValue:null}))})),St(Et(a),\"setPreSelection\",(function(e){var t=void 0!==a.props.minDate,r=void 0!==a.props.maxDate,n=!0;if(e){a.props.showWeekPicker&&(e=Qt(e,a.props.locale,a.props.calendarStartDay));var o=$e.default(e);if(t&&r)n=Zt(e,a.props.minDate,a.props.maxDate);else if(t){var s=$e.default(a.props.minDate);n=pt.default(e,s)||Xt(o,s)}else if(r){var i=et.default(a.props.maxDate);n=lt.default(e,i)||Xt(o,i)}}n&&a.setState({preSelection:e})})),St(Et(a),\"toggleCalendar\",(function(){a.setOpen(!a.state.open)})),St(Et(a),\"handleTimeChange\",(function(e){var t=a.props.selected?a.props.selected:a.getPreSelection(),r=a.props.selected?e:Bt(t,{hour:xe.default(e),minute:Ne.default(e)});a.setState({preSelection:r}),a.props.onChange(r),a.props.shouldCloseOnSelect&&(a.sendFocusBackToInput(),a.setOpen(!1)),a.props.showTimeInput&&a.setOpen(!0),(a.props.showTimeSelectOnly||a.props.showTimeSelect)&&a.setState({isRenderAriaLiveMessage:!0}),a.setState({inputValue:null})})),St(Et(a),\"onInputClick\",(function(){a.props.disabled||a.props.readOnly||a.setOpen(!0),a.props.onInputClick()})),St(Et(a),\"onInputKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key;if(a.state.open||a.props.inline||a.props.preventOpenOnFocus){if(a.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var r=a.props.showWeekPicker&&a.props.showWeekNumbers?'.react-datepicker__week-number[tabindex=\"0\"]':'.react-datepicker__day[tabindex=\"0\"]',n=a.calendar.componentNode&&a.calendar.componentNode.querySelector(r);return void(n&&n.focus({preventScroll:!0}))}var o=At(a.state.preSelection);\"Enter\"===t?(e.preventDefault(),a.inputOk()&&a.state.lastPreSelectChange===ca?(a.handleSelect(o,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(o)):a.setOpen(!1)):\"Escape\"===t?(e.preventDefault(),a.sendFocusBackToInput(),a.setOpen(!1)):\"Tab\"===t&&a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:ia})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||a.onInputClick()})),St(Et(a),\"onPortalKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.setState({preventFocus:!0},(function(){a.setOpen(!1),setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))})))})),St(Et(a),\"onDayKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key,r=At(a.state.preSelection);if(\"Enter\"===t)e.preventDefault(),a.handleSelect(r,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(r);else if(\"Escape\"===t)e.preventDefault(),a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:ia});else if(!a.props.disabledKeyboardNavigation){var n;switch(t){case\"ArrowLeft\":n=a.props.showWeekPicker?Ce.default(r,1):Se.default(r,1);break;case\"ArrowRight\":n=a.props.showWeekPicker?ge.default(r,1):De.default(r,1);break;case\"ArrowUp\":n=Ce.default(r,1);break;case\"ArrowDown\":n=ge.default(r,1);break;case\"PageUp\":n=_e.default(r,1);break;case\"PageDown\":n=ke.default(r,1);break;case\"Home\":n=Pe.default(r,1);break;case\"End\":n=be.default(r,1);break;default:n=null}if(!n)return void(a.props.onInputError&&a.props.onInputError({code:1,msg:ia}));if(e.preventDefault(),a.setState({lastPreSelectChange:ca}),a.props.adjustDateOnChange&&a.setSelected(n),a.setPreSelection(n),a.props.inline){var o=Te.default(r),s=Te.default(n),i=Le.default(r),p=Le.default(n);o!==s||i!==p?a.setState({shouldFocusDayInline:!0}):a.setState({shouldFocusDayInline:!1})}}})),St(Et(a),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.sendFocusBackToInput())})),St(Et(a),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),a.sendFocusBackToInput(),a.props.selectsRange?a.props.onChange([null,null],e):a.props.onChange(null,e),a.setState({inputValue:null})})),St(Et(a),\"clear\",(function(){a.onClearClick()})),St(Et(a),\"onScroll\",(function(e){\"boolean\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||a.setOpen(!1):\"function\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll(e)&&a.setOpen(!1)})),St(Et(a),\"renderCalendar\",(function(){return a.props.inline||a.isCalendarOpen()?de.default.createElement(sa,{ref:function(e){a.calendar=e},locale:a.props.locale,calendarStartDay:a.props.calendarStartDay,chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,monthAriaLabelPrefix:a.props.monthAriaLabelPrefix,adjustDateOnChange:a.props.adjustDateOnChange,setOpen:a.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,dateFormat:a.props.dateFormatCalendar,useWeekdaysShort:a.props.useWeekdaysShort,formatWeekDay:a.props.formatWeekDay,dropdownMode:a.props.dropdownMode,selected:a.props.selected,preSelection:a.state.preSelection,onSelect:a.handleSelect,onWeekSelect:a.props.onWeekSelect,openToDate:a.props.openToDate,minDate:a.props.minDate,maxDate:a.props.maxDate,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,startDate:a.props.startDate,endDate:a.props.endDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,filterDate:a.props.filterDate,onClickOutside:a.handleCalendarClickOutside,formatWeekNumber:a.props.formatWeekNumber,highlightDates:a.state.highlightDates,holidays:Sr(a.modifyHolidays()),includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,includeTimes:a.props.includeTimes,injectTimes:a.props.injectTimes,inline:a.props.inline,shouldFocusDayInline:a.state.shouldFocusDayInline,peekNextMonth:a.props.peekNextMonth,showMonthDropdown:a.props.showMonthDropdown,showPreviousMonths:a.props.showPreviousMonths,useShortMonthInDropdown:a.props.useShortMonthInDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showWeekNumbers:a.props.showWeekNumbers,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,forceShowMonthNavigation:a.props.forceShowMonthNavigation,showDisabledMonthNavigation:a.props.showDisabledMonthNavigation,scrollableYearDropdown:a.props.scrollableYearDropdown,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown,todayButton:a.props.todayButton,weekLabel:a.props.weekLabel,outsideClickIgnoreClass:oa,fixedHeight:a.props.fixedHeight,monthsShown:a.props.monthsShown,monthSelectedIn:a.state.monthSelectedIn,onDropdownFocus:a.handleDropdownFocus,onMonthChange:a.props.onMonthChange,onYearChange:a.props.onYearChange,dayClassName:a.props.dayClassName,weekDayClassName:a.props.weekDayClassName,monthClassName:a.props.monthClassName,timeClassName:a.props.timeClassName,showDateSelect:a.props.showDateSelect,showTimeSelect:a.props.showTimeSelect,showTimeSelectOnly:a.props.showTimeSelectOnly,onTimeChange:a.handleTimeChange,timeFormat:a.props.timeFormat,timeIntervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,className:a.props.calendarClassName,container:a.props.calendarContainer,yearItemNumber:a.props.yearItemNumber,yearDropdownItemNumber:a.props.yearDropdownItemNumber,previousMonthAriaLabel:a.props.previousMonthAriaLabel,previousMonthButtonLabel:a.props.previousMonthButtonLabel,nextMonthAriaLabel:a.props.nextMonthAriaLabel,nextMonthButtonLabel:a.props.nextMonthButtonLabel,previousYearAriaLabel:a.props.previousYearAriaLabel,previousYearButtonLabel:a.props.previousYearButtonLabel,nextYearAriaLabel:a.props.nextYearAriaLabel,nextYearButtonLabel:a.props.nextYearButtonLabel,timeInputLabel:a.props.timeInputLabel,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,renderCustomHeader:a.props.renderCustomHeader,popperProps:a.props.popperProps,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,onDayMouseEnter:a.props.onDayMouseEnter,onMonthMouseLeave:a.props.onMonthMouseLeave,onYearMouseEnter:a.props.onYearMouseEnter,onYearMouseLeave:a.props.onYearMouseLeave,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showTimeInput:a.props.showTimeInput,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showWeekPicker:a.props.showWeekPicker,showPopperArrow:a.props.showPopperArrow,excludeScrollbar:a.props.excludeScrollbar,handleOnKeyDown:a.props.onKeyDown,handleOnDayKeyDown:a.onDayKeyDown,isInputFocused:a.state.focused,customTimeInput:a.props.customTimeInput,setPreSelection:a.setPreSelection},a.props.children):null})),St(Et(a),\"renderAriaLiveRegion\",(function(){var e,t=a.props,r=t.dateFormat,n=t.locale,o=a.props.showTimeInput||a.props.showTimeSelect?\"PPPPp\":\"PPPP\";return e=a.props.selectsRange?\"Selected start date: \".concat(Kt(a.props.startDate,{dateFormat:o,locale:n}),\". \").concat(a.props.endDate?\"End date: \"+Kt(a.props.endDate,{dateFormat:o,locale:n}):\"\"):a.props.showTimeSelectOnly?\"Selected time: \".concat(Kt(a.props.selected,{dateFormat:r,locale:n})):a.props.showYearPicker?\"Selected year: \".concat(Kt(a.props.selected,{dateFormat:\"yyyy\",locale:n})):a.props.showMonthYearPicker?\"Selected month: \".concat(Kt(a.props.selected,{dateFormat:\"MMMM yyyy\",locale:n})):a.props.showQuarterYearPicker?\"Selected quarter: \".concat(Kt(a.props.selected,{dateFormat:\"yyyy, QQQ\",locale:n})):\"Selected date: \".concat(Kt(a.props.selected,{dateFormat:o,locale:n})),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},e)})),St(Et(a),\"renderDateInput\",(function(){var e,t=ue.default(a.props.className,St({},oa,a.state.open)),r=a.props.customInput||de.default.createElement(\"input\",{type:\"text\"}),n=a.props.customInputRef||\"ref\",o=\"string\"==typeof a.props.value?a.props.value:\"string\"==typeof a.state.inputValue?a.state.inputValue:a.props.selectsRange?function(e,t,r){if(!e)return\"\";var a=Kt(e,r),n=t?Kt(t,r):\"\";return\"\".concat(a,\" - \").concat(n)}(a.props.startDate,a.props.endDate,a.props):Kt(a.props.selected,a.props);return de.default.cloneElement(r,(St(St(St(St(St(St(St(St(St(St(e={},n,(function(e){a.input=e})),\"value\",o),\"onBlur\",a.handleBlur),\"onChange\",a.handleChange),\"onClick\",a.onInputClick),\"onFocus\",a.handleFocus),\"onKeyDown\",a.onInputKeyDown),\"id\",a.props.id),\"name\",a.props.name),\"form\",a.props.form),St(St(St(St(St(St(St(St(St(St(e,\"autoFocus\",a.props.autoFocus),\"placeholder\",a.props.placeholderText),\"disabled\",a.props.disabled),\"autoComplete\",a.props.autoComplete),\"className\",ue.default(r.props.className,t)),\"title\",a.props.title),\"readOnly\",a.props.readOnly),\"required\",a.props.required),\"tabIndex\",a.props.tabIndex),\"aria-describedby\",a.props.ariaDescribedBy),St(St(St(e,\"aria-invalid\",a.props.ariaInvalid),\"aria-labelledby\",a.props.ariaLabelledBy),\"aria-required\",a.props.ariaRequired)))})),St(Et(a),\"renderClearButton\",(function(){var e=a.props,t=e.isClearable,r=e.disabled,n=e.selected,o=e.startDate,s=e.endDate,i=e.clearButtonTitle,p=e.clearButtonClassName,l=void 0===p?\"\":p,c=e.ariaLabelClose,d=void 0===c?\"Close\":c;return!t||null==n&&null==o&&null==s?null:de.default.createElement(\"button\",{type:\"button\",className:ue.default(\"react-datepicker__close-icon\",l,{\"react-datepicker__close-icon--disabled\":r}),disabled:r,\"aria-label\":d,onClick:a.onClearClick,title:i,tabIndex:-1})})),a.state=a.calcInitialState(),a.preventFocusTimeout=null,a}return bt(r,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,a;e.inline&&(r=e.selected,a=this.props.selected,r&&a?Te.default(r)!==Te.default(a)||Le.default(r)!==Le.default(a):r!==a)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:br(this.props.highlightDates)}),t.focused||Xt(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"renderInputContainer\",value:function(){var e=this.props,t=e.showIcon,r=e.icon,a=e.calendarIconClassname,n=e.toggleCalendarOnIconClick,o=this.state.open;return de.default.createElement(\"div\",{className:\"react-datepicker__input-container\".concat(t?\" react-datepicker__view-calendar-icon\":\"\")},t&&de.default.createElement(ea,Ct({icon:r,className:\"\".concat(a,\" \").concat(o&&\"react-datepicker-ignore-onclickoutside\")},n?{onClick:this.toggleCalendar}:null)),this.state.isRenderAriaLiveMessage&&this.renderAriaLiveRegion(),this.renderDateInput(),this.renderClearButton())}},{key:\"render\",value:function(){var e=this.renderCalendar();if(this.props.inline)return e;if(this.props.withPortal){var t=this.state.open?de.default.createElement(aa,{enableTabLoop:this.props.enableTabLoop},de.default.createElement(\"div\",{className:\"react-datepicker__portal\",tabIndex:-1,onKeyDown:this.onPortalKeyDown},e)):null;return this.state.open&&this.props.portalId&&(t=de.default.createElement(ta,{portalId:this.props.portalId,portalHost:this.props.portalHost},t)),de.default.createElement(\"div\",null,this.renderInputContainer(),t)}return de.default.createElement(na,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,portalHost:this.props.portalHost,popperModifiers:this.props.popperModifiers,targetComponent:this.renderInputContainer(),popperContainer:this.props.popperContainer,popperComponent:e,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop})}}],[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,selectsDisabledDaysInRange:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showFourColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,showWeekPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthAriaLabel:\"Previous Month\",previousMonthButtonLabel:\"Previous Month\",nextMonthAriaLabel:\"Next Month\",nextMonthButtonLabel:\"Next Month\",previousYearAriaLabel:\"Previous Year\",previousYearButtonLabel:\"Previous Year\",nextYearAriaLabel:\"Next Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,yearItemNumber:Lt,focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null,calendarStartDay:void 0,toggleCalendarOnIconClick:!1}}}]),r}(de.default.Component),la=\"input\",ca=\"navigate\";e.CalendarContainer=Jr,e.default=pa,e.getDefaultLocale=er,e.registerLocale=function(e,t){var r=\"undefined\"!=typeof window?window:globalThis;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t},e.setDefaultLocale=function(e){(\"undefined\"!=typeof window?window:globalThis).__localeId__=e},Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","/** @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\n//\nclass Draggable extends React.Component /*:: */{\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial*/{\n let {\n position\n } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n let {\n prevPropsPosition\n } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\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,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: {\n ...position\n }\n };\n }\n return null;\n }\n constructor(props /*: DraggableProps*/) {\n super(props);\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState = {\n x: uiData.x,\n y: uiData.y,\n slackX: 0,\n slackY: 0\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState;\n\n // 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 newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\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 }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState /*: Partial*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\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 const controlled = Boolean(this.props.position);\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n this.setState(newState);\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: {\n ...props.position\n },\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 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 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 componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\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 findDOMNode() /*: ?HTMLElement*/{\n var _this$props$nodeRef$c, _this$props;\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n render() /*: ReactElement*/{\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const 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 };\n\n // If this element was SVG, we use the `transform` attribute.\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 }\n\n // Mark with class while dragging\n const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\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: {\n ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n // Accepts all props accepts.\n ..._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 * `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 * `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 * `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 * 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_defineProperty(Draggable, \"defaultProps\", {\n ..._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\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (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 _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); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst 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};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\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/*:: 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// 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//\n\nclass DraggableCore extends React.Component /*:: */{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"dragging\", false);\n // Used while dragging to determine deltas.\n _defineProperty(this, \"lastX\", NaN);\n _defineProperty(this, \"lastY\", NaN);\n _defineProperty(this, \"touchIdentifier\", null);\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = this.findDOMNode();\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {\n ownerDocument\n } = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\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 }\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n if (e.type === 'touchstart') e.preventDefault();\n\n // 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 const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.touchIdentifier = touchIdentifier;\n\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {\n x,\n y\n } = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // 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 this.dragging = true;\n this.lastX = x;\n this.lastY = y;\n\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 (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX,\n deltaY = y - this.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n this.lastX = x;\n this.lastY = y;\n });\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX || 0;\n let deltaY = y - this.lastY || 0;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n // Call event handler\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = this.findDOMNode();\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.dragging = false;\n this.lastX = NaN;\n this.lastY = NaN;\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 _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n // Same as onMouseDown (start drag), but now consider this a touch device.\n _defineProperty(this, \"onTouchStart\", 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 _defineProperty(this, \"onTouchEnd\", 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 componentDidMount() {\n this.mounted = true;\n // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n const thisNode = this.findDOMNode();\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n componentWillUnmount() {\n this.mounted = false;\n // 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 const thisNode = this.findDOMNode();\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\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 }\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 findDOMNode() /*: ?HTMLElement*/{\n var _this$props, _this$props2;\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n }\n render() /*: React.Element*/{\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}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\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 children: _propTypes.default.node.isRequired,\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 * 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 * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys*/) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\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 * `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 * `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 /* 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 * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\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 * 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 * 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 * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\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_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {},\n scale: 1\n});","\"use strict\";\n\nconst {\n default: Draggable,\n DraggableCore\n} = require('./Draggable');\n\n// 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\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\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;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (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; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\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 }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n // $FlowIgnore[incompatible-type]\n node = node.parentNode;\n } while (node);\n return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\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}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\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}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n let width = node.clientWidth;\n const 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// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n let {\n x,\n y\n } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n if (positionOffset) {\n const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\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}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\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 if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n // $FlowIgnore: IE\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 const selection = (doc.defaultView || window).getSelection();\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {\n // probably IE\n }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\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}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\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;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n var _window$document;\n let prop /*: string*/ = 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 '';\n\n // 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 const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n if (!style) return '';\n if (prop in style) return '';\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n let out = '';\n let shouldCapitalize = true;\n for (let 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 return out;\n}\n\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`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n if (undefined) console.log(...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;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\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 }\n\n // Keep x and y below right and bottom limits...\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);\n\n // But above left and top limits.\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}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by 's events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n const isStart = !(0, _shims.isNum)(draggable.lastX);\n const node = findDOMNode(draggable);\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - draggable.lastX,\n deltaY: y - draggable.lastY,\n lastX: draggable.lastX,\n lastY: draggable.lastY,\n x,\n y\n };\n }\n}\n\n// Create an data exposed by 's events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n const 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}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n const node = draggable.findDOMNode();\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\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// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\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}","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n // Also cover shadowRoot node by checking current.host\n\n\n while (current.parentNode || current.host) {\n // Only check normal node without shadowRoot\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode || current.host;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};function autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = {};\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions.passive = !instance.props.preventDefault;\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n if (_this.initTimeStamp > event.timeStamp) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n _this.initTimeStamp = performance.now();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n }\n /**\n * Remove all document's event listeners for this component\n */\n ;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n }\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n ;\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","import * as React from 'react';\nexport var ManagerReferenceNodeContext = React.createContext();\nexport var ManagerReferenceNodeSetterContext = React.createContext();\nexport function Manager(_ref) {\n var children = _ref.children;\n\n var _React$useState = React.useState(null),\n referenceNode = _React$useState[0],\n setReferenceNode = _React$useState[1];\n\n var hasUnmounted = React.useRef(false);\n React.useEffect(function () {\n return function () {\n hasUnmounted.current = true;\n };\n }, []);\n var handleSetReferenceNode = React.useCallback(function (node) {\n if (!hasUnmounted.current) {\n setReferenceNode(node);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n value: referenceNode\n }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: handleSetReferenceNode\n }, children));\n}","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\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\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef } from './utils';\nimport { usePopper } from './usePopper';\n\nvar NOOP = function NOOP() {\n return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\nexport function Popper(_ref) {\n var _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n _ref$strategy = _ref.strategy,\n strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n referenceElement = _ref.referenceElement,\n onFirstUpdate = _ref.onFirstUpdate,\n innerRef = _ref.innerRef,\n children = _ref.children;\n var referenceNode = React.useContext(ManagerReferenceNodeContext);\n\n var _React$useState = React.useState(null),\n popperElement = _React$useState[0],\n setPopperElement = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n arrowElement = _React$useState2[0],\n setArrowElement = _React$useState2[1];\n\n React.useEffect(function () {\n setRef(innerRef, popperElement);\n }, [innerRef, popperElement]);\n var options = React.useMemo(function () {\n return {\n placement: placement,\n strategy: strategy,\n onFirstUpdate: onFirstUpdate,\n modifiers: [].concat(modifiers, [{\n name: 'arrow',\n enabled: arrowElement != null,\n options: {\n element: arrowElement\n }\n }])\n };\n }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options),\n state = _usePopper.state,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate,\n update = _usePopper.update;\n\n var childrenProps = React.useMemo(function () {\n return {\n ref: setPopperElement,\n style: styles.popper,\n placement: state ? state.placement : placement,\n hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n arrowProps: {\n style: styles.arrow,\n ref: setArrowElement\n },\n forceUpdate: forceUpdate || NOOP,\n update: update || NOOP_PROMISE\n };\n }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n return unwrapArray(children)(childrenProps);\n}","import * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\nexport function Reference(_ref) {\n var children = _ref.children,\n innerRef = _ref.innerRef;\n var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext);\n var refHandler = React.useCallback(function (node) {\n setRef(innerRef, node);\n safeInvoke(setReferenceNode, node);\n }, [innerRef, setReferenceNode]); // ran on unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n React.useEffect(function () {\n return function () {\n return setRef(innerRef, null);\n };\n }, []);\n React.useEffect(function () {\n warning(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n }, [setReferenceNode]);\n return unwrapArray(children)({\n ref: refHandler\n });\n}","/** @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=\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 {\r\n createContext,\r\n Dispatch,\r\n FC,\r\n SetStateAction,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useRef,\r\n useState\r\n} from \"react\";\r\nimport { Feature } from \"ol\";\r\nimport { IEsriFieldInfo } from \"../Map/rest\";\r\nimport { Basemaps, DrawType } from \"../Map/enums\";\r\nimport { generateSnapshots } from \"../Map/snapshot\";\r\nimport { IInfo } from \"../Popups/Info/Info\";\r\nimport { IStoredSettings } from \"../interfaces\";\r\nimport { config } from \"../Map/config\";\r\nimport { Geometry } from \"ol/geom\";\r\n\r\nexport interface IAppContext {\r\n hasMap: boolean;\r\n setHasMap: Dispatch>;\r\n basemap: Basemaps;\r\n setBasemap: Dispatch>;\r\n activeTab: number;\r\n setActiveTab: Dispatch>;\r\n fieldInfos: IEsriFieldInfo[];\r\n setFieldInfos: Dispatch>;\r\n isMobile: boolean;\r\n isIFrame: boolean;\r\n getFieldAlias: (fieldName: string) => string;\r\n getFieldValue: (feature: Feature, fieldName: string) => any;\r\n getDateFormated: (time: number) => string;\r\n zoomToSourceFeatures: number;\r\n setZoomToSourceFeatures: Dispatch>;\r\n locateFeature: ILocatedFeature;\r\n setLocateFeature: Dispatch>;\r\n layersMenuVisible: boolean;\r\n toggleLayersMenuVisible: () => void;\r\n enabledLayers: string[];\r\n setEnabledLayers: Dispatch>;\r\n registerFeature: Feature;\r\n setRegisterFeature: Dispatch>;\r\n info: IInfo;\r\n setInfo: Dispatch>;\r\n getStoredSettings: () => IStoredSettings;\r\n scaleWarning: boolean;\r\n setScaleWarning: Dispatch>;\r\n clickedFeatures: Feature[];\r\n setClickedFeatures: (features: Feature[]) => void;\r\n drawType: DrawType;\r\n setDrawType: Dispatch>;\r\n identifiedFeatures: Feature[];\r\n setIdentifiedFeatures: Dispatch>;\r\n}\r\n\r\nexport interface IApplyFeature {\r\n feature: Feature;\r\n isRight?: boolean;\r\n}\r\nexport interface ILocatedFeature {\r\n feature: Feature;\r\n timestamp: number;\r\n}\r\n\r\nconst AppContext = createContext(null);\r\n\r\nexport const useAppContext = (): IAppContext => useContext(AppContext);\r\n\r\nexport const AppContextProvider: FC = (props: React.PropsWithChildren) => {\r\n const getStoredSettings = (): IStoredSettings => {\r\n const notInTocLayers = config.layers.map((layer) => !layer.showInToc && layer.id).filter((l) => l);\r\n const storedSettings: IStoredSettings = {\r\n layers: localStorage.getItem(\"layers\")\r\n ? [...JSON.parse(localStorage.getItem(\"layers\")), ...notInTocLayers]\r\n : config.layers.map((layer) => layer.visible && layer.id).filter((l) => l),\r\n basemap: localStorage.getItem(\"basemap\") && JSON.parse(localStorage.getItem(\"basemap\"))\r\n };\r\n\r\n return storedSettings;\r\n };\r\n const getBasemap = getStoredSettings().basemap\r\n ? getStoredSettings().basemap\r\n : config.basemaps.find((b) => b.visible).id;\r\n\r\n const [hasMap, setHasMap] = useState(false);\r\n // const [hasMap, setHasMap] = useState(true);\r\n const [basemap, setBasemap] = useState(getBasemap as Basemaps);\r\n const [activeTab, setActiveTab] = useState(1);\r\n const [fieldInfos, setFieldInfos] = useState();\r\n const [zoomToSourceFeatures, setZoomToSourceFeatures] = useState(null);\r\n const [locateFeature, setLocateFeature] = useState(null);\r\n const [layersMenuVisible, setLayersMenuVisible] = useState(false);\r\n const [enabledLayers, setEnabledLayers] = useState([]);\r\n const [registerFeature, setRegisterFeature] = useState>();\r\n const [info, setInfo] = useState(null);\r\n const [scaleWarning, setScaleWarning] = useState(true);\r\n const [clickedFeatures, setClickedFeatures] = useState[]>();\r\n const [drawType, setDrawType] = useState();\r\n const [identifiedFeatures, setIdentifiedFeatures] = useState[]>();\r\n\r\n const clickedFeaturesRef = useRef[]>();\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 const layersMenuVisibleRef = useRef(false);\r\n\r\n useEffect(() => {\r\n const layerId =\r\n drawType === DrawType.PolygonProperty\r\n ? \"cadaster\"\r\n : drawType === DrawType.PolylineLvmRoad\r\n ? \"roadsLVM\"\r\n : null;\r\n\r\n layerId && !enabledLayers.includes(layerId) && setEnabledLayers([...enabledLayers, layerId]);\r\n }, [drawType]);\r\n\r\n const getFieldAlias = (fieldName: string) => fieldInfos && fieldInfos.find((f) => f.name === fieldName).alias;\r\n\r\n const getFieldValue = (feature: Feature, fieldName: string) => {\r\n const field = fieldInfos && fieldInfos.find((f) => f.name === fieldName);\r\n if (!field) {\r\n return undefined;\r\n }\r\n const value = feature.get(field.name);\r\n if (fieldName === \"EVENTDATE\" && value) {\r\n return getDateFormated(value) + \" \" + getTimeFormated(value);\r\n }\r\n if (field.type === \"esriFieldTypeDate\" && value) {\r\n return getDateFormated(value);\r\n }\r\n if (field.domain && field.domain.type === \"codedValue\" && value) {\r\n const codedValue = field.domain.codedValues.find((codedValue) => codedValue.code == value);\r\n return codedValue && codedValue.name ? codedValue.name : null;\r\n }\r\n return value;\r\n };\r\n\r\n const getDateFormated = (value: number) => {\r\n const date = new Date(value);\r\n return (\r\n date.getUTCDate().toString().padStart(2, \"0\") +\r\n \".\" +\r\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\") +\r\n \".\" +\r\n date.getUTCFullYear()\r\n );\r\n };\r\n\r\n const toggleLayersMenuVisible = () => {\r\n layersMenuVisibleRef.current = !layersMenuVisibleRef.current;\r\n setLayersMenuVisible(layersMenuVisibleRef.current);\r\n };\r\n\r\n const changeActiveTab = (tab: number) => {\r\n setActiveTab(tab);\r\n };\r\n\r\n const changeRegisterFeature = (feature: Feature) => {\r\n if (feature) {\r\n // generateSnapshots(feature, basemap, setSnapshotBig, setSnapshot);\r\n }\r\n setRegisterFeature(feature);\r\n };\r\n\r\n const prepareLocateFeature = useCallback((feature) => {\r\n setLocateFeature({ feature, timestamp: Date.now() });\r\n }, []);\r\n\r\n const prepareClickedFeatures = (features: Feature[]) => {\r\n clickedFeaturesRef.current &&\r\n clickedFeaturesRef.current.length &&\r\n clickedFeaturesRef.current.map((f) => f.set(\"CLICKED\", false));\r\n setClickedFeatures(features);\r\n clickedFeaturesRef.current = features;\r\n };\r\n\r\n const values = {\r\n hasMap,\r\n setHasMap,\r\n basemap,\r\n setBasemap,\r\n activeTab,\r\n setActiveTab: changeActiveTab,\r\n fieldInfos,\r\n setFieldInfos,\r\n isMobile,\r\n isIFrame,\r\n getFieldAlias,\r\n getFieldValue,\r\n getDateFormated,\r\n zoomToSourceFeatures,\r\n setZoomToSourceFeatures,\r\n locateFeature,\r\n setLocateFeature: prepareLocateFeature,\r\n layersMenuVisible,\r\n toggleLayersMenuVisible,\r\n enabledLayers,\r\n setEnabledLayers,\r\n registerFeature,\r\n setRegisterFeature: changeRegisterFeature,\r\n info,\r\n setInfo,\r\n getStoredSettings,\r\n scaleWarning,\r\n setScaleWarning,\r\n clickedFeatures,\r\n setClickedFeatures: prepareClickedFeatures,\r\n drawType,\r\n setDrawType,\r\n identifiedFeatures,\r\n setIdentifiedFeatures\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","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 } from \"ol\";\r\nimport { DrawType, OlDrawTypes } from \"../Map/enums\";\r\nimport { Collection } from \"ol\";\r\nimport { Draw, Modify, Select, DoubleClickZoom } from \"ol/interaction\";\r\nimport { getDrawingSymbol } from \"../Map/symbols\";\r\nimport { config } from \"../Map/config\";\r\nimport { getMap } from \"../Forms/DrawingForm\";\r\nimport { useRegistrationContext } from \"./RegistrationContext\";\r\nimport { primaryAction, singleClick } from \"ol/events/condition\";\r\nimport { Vector as VectorSource } from \"ol/source\";\r\nimport { useAppContext } from \"./AppContext\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport { Type } from \"ol/geom/Geometry\";\r\n\r\nconst drawingLayerId = config.default.drawingLayerId;\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 propertyNote: string;\r\n setPropertyNote: 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, scaleWarning, drawType, setDrawType, setIdentifiedFeatures } = useAppContext();\r\n const { drawnFeatures, setDrawnFeatures, setDrawingMenuVisible } = useRegistrationContext();\r\n\r\n const [newFeature, setNewFeature] = useState();\r\n const [selectedFeature, setSelectedFeature] = useState();\r\n\r\n const propertyFeature = drawnFeatures && drawnFeatures.find((f) => f.get(\"DRAWTYPE\") === DrawType.PolygonProperty);\r\n const [propertyNote, setPropertyNote] = useState(propertyFeature && propertyFeature.get(\"MASTERNAME\"));\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}\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 { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport \"./HelpButton.scss\";\r\n\r\nexport const HelpButton = (): JSX.Element => {\r\n const { drawingInfoVisible, setDrawingInfoVisible } = useRegistrationContext();\r\n\r\n const showHelpPopup = () => {\r\n setDrawingInfoVisible(drawingInfoVisible ? false : true);\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 } 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 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}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect, useRef } from \"react\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport \"./SearchInfoButton.scss\";\r\n\r\nexport const SearchInfoButton = (): JSX.Element => {\r\n const { searchInfoVisible, setSearchInfoVisible, toggleSearchInfo } = useRegistrationContext();\r\n\r\n const ref = useRef();\r\n\r\n useEffect(() => {\r\n searchInfoVisible && ref.current && ref.current.focus();\r\n }, [searchInfoVisible]);\r\n\r\n return (\r\n setSearchInfoVisible(false)}\r\n >\r\n ?\r\n \r\n );\r\n};\r\n","import classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { ApplicantType, Input, PageId } from \"../Map/enums\";\r\nimport { IEsriFieldInfo, IObjectIDs, requestObjectIds, updateFeatures } from \"../Map/rest\";\r\nimport { Feature } from \"ol\";\r\nimport { config, IInputFieldConfig } from \"../Map/config\";\r\nimport { Form } from \"./Form\";\r\nimport { PrivacySection } from \"../Registration/PrivacySection\";\r\n\r\nconst formId = PageId.ApplicantForm;\r\n\r\nexport const ApplicantForm = (): JSX.Element => {\r\n const { fieldInfos } = useAppContext();\r\n const {\r\n formFeature,\r\n setFormFeature,\r\n resetForm,\r\n setResetForm,\r\n rawData,\r\n setRawData,\r\n setOverlay,\r\n validateForm,\r\n onFormUpdated,\r\n proceedClicked,\r\n setProceedClicked\r\n } = useRegistrationContext();\r\n\r\n const [applicantType, setApplicantType] = useState(\r\n formFeature ? formFeature.get(\"APPLICANTTYPE\") : ApplicantType.Company\r\n );\r\n const [isFormValid, setIsFormValid] = useState(null);\r\n const [formData, setFormData] = useState({});\r\n const [idRequested, setIdRequested] = useState(false);\r\n const [error, setError] = useState(false);\r\n\r\n useEffect(() => {\r\n if (isFormValid && !formFeature) {\r\n console.log(\"Can not update feature without OBJECTID\");\r\n setError(true);\r\n return;\r\n }\r\n isFormValid && proceedClicked && onFormValid();\r\n }, [isFormValid, proceedClicked]);\r\n\r\n const onFormValid = async () => {\r\n setOverlay({ isLoading: true });\r\n const updateResults = await updateFeatures([appendFormData()], \"3\");\r\n if (!updateResults[0].success) {\r\n return;\r\n }\r\n setOverlay(null);\r\n onFormUpdated();\r\n console.log(\"gatavs iesniegšanai\", updateResults[0]);\r\n };\r\n\r\n const createNewFeature = () => {\r\n const newFeature = new Feature();\r\n newFeature.setProperties({\r\n FORMINPUTSTATE: 1,\r\n APPLICATIONDATE: getFixedTimestamp(),\r\n APPLICANTTYPE: applicantType\r\n });\r\n // newFeature.setGeometry(registerFeature.getGeometry());\r\n return newFeature;\r\n };\r\n\r\n const appendFormData = useCallback(() => {\r\n const newprops = {};\r\n newprops[\"FORMINPUTSTATE\"] = 100;\r\n const configFields =\r\n applicantType === ApplicantType.Individual\r\n ? config.forms.individualApplicantForm.fields\r\n : config.forms.companyApplicantForm.fields;\r\n configFields.map((f) => {\r\n newprops[f.field] =\r\n f.type === Input.Checkbox\r\n ? convertBooleanToCodedValue(\r\n fieldInfos.find((info) => info.name === f.field),\r\n f,\r\n formData\r\n )\r\n : formData[f.field];\r\n });\r\n\r\n formFeature.setProperties(newprops);\r\n return formFeature;\r\n }, [formData, applicantType]);\r\n\r\n // STEP 1 - request ObjectId on first input change\r\n useEffect(() => {\r\n if (!Object.keys(rawData).length || formFeature || idRequested) {\r\n return;\r\n }\r\n setIdRequested(true);\r\n const newFeature = createNewFeature();\r\n requestObjectIds([newFeature], \"3\").then((ids: IObjectIDs[]) => {\r\n if (!ids || !ids[0]) {\r\n console.log(\"Connection error while requesting OBJECTID\");\r\n setError(true);\r\n return;\r\n }\r\n newFeature.setId(ids[0].objectId);\r\n newFeature.setProperties({\r\n OBJECTID: ids[0].objectId,\r\n GLOBALID: ids[0].globalId\r\n });\r\n setFormFeature(newFeature);\r\n setIdRequested(false);\r\n console.log(\"piešķirts OBJECTID\", ids[0].objectId);\r\n });\r\n }, [rawData, /* applicantType,*/ idRequested]);\r\n\r\n const onFormValidated = (isValid: boolean) => {\r\n isValid ? setFormData(rawData) : setProceedClicked(false);\r\n setIsFormValid(isValid ? Date.now() : null);\r\n };\r\n\r\n const changeForm = (formType: ApplicantType) => {\r\n formType !== applicantType && setResetForm(Date.now());\r\n setApplicantType(formType);\r\n };\r\n\r\n const onFormChanged = (data) => {\r\n setRawData(data);\r\n };\r\n\r\n const validate =\r\n ((validateForm.split(\"-\")[0] as unknown) as PageId) === formId ? Number(validateForm.split(\"-\")[1]) : 1;\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {error ?
Kļūda servera savienojumā!
: null}\r\n \r\n );\r\n};\r\n\r\nconst TabButton = ({\r\n type,\r\n applicant,\r\n onClick\r\n}: {\r\n type: ApplicantType;\r\n applicant: ApplicantType;\r\n onClick: CallableFunction;\r\n}) => {\r\n return (\r\n onClick(type)}\r\n >\r\n {type === ApplicantType.Individual ? \"Fiziska persona\" : \"Juridiska persona\"}\r\n \r\n );\r\n};\r\n\r\nconst getFixedTimestamp = () => {\r\n const date = new Date(Date.now());\r\n return Date.UTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds()\r\n );\r\n};\r\n\r\nconst convertBooleanToCodedValue = (fieldConfig: IEsriFieldInfo, f: IInputFieldConfig, formData) =>\r\n fieldConfig && fieldConfig.domain && fieldConfig.domain.codedValues\r\n ? fieldConfig.domain.codedValues.find((cv) =>\r\n formData[f.field] ? cv.name.toUpperCase() === \"JĀ\" : cv.name.toUpperCase() === \"NĒ\"\r\n ).code\r\n : formData[f.field];\r\n","import * as React from \"react\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { Checkbox } from \"../Elements/Checkbox\";\r\nimport \"./ConditionsForm.scss\";\r\n\r\nexport const ConditionsForm = (): JSX.Element => {\r\n const { setConditionAgreed } = useRegistrationContext();\r\n\r\n return (\r\n
\r\n \r\n Ar cirsmas izstrādi saistīto darbību (sortimentu pievešana, nokraušana, transportēšana u.c. turpmāk -\r\n Darbība) LVM meža zemē un/vai meža ceļu izmantošanu drīkst uzsākt saņemot rakstisku LVM saskaņojumu uz\r\n elektroniskā pasta adresi vai pēc Vienošanās noslēgšanas.\r\n \r\n
    \r\n
  • \r\n Kokmateriālu pievešanu veikt tikai pa dabā esošiem pievešanas ceļiem vai brauktuvēm tam piemērotos\r\n laika apstākļos. Kokmateriālu izvedējtehnikai nepārvietoties pa meža autoceļiem.\r\n
  • \r\n
  • \r\n Kokmateriālu pievešanas un nokraušanas laikā nebojāt augošus kokus, un ceļa sāngrāvjus vai nogāzes.\r\n
  • \r\n
  • \r\n Pēc darbu pabeigšanas veikt pievešanas ceļu, krautuves vietas sakārtošanu, nolīdzināt izveidojušos\r\n augsnes bojājumus (risas), sakārtot ceļa infrastruktūru.\r\n
  • \r\n
  • \r\n Meža autoceļus kokmateriālu transportēšanai izmantot tikai piemērotos (sausuma vai sasaluma) laika\r\n apstākļos, neradot bojājumus un ievērojot noteikumus par maksimālo pieļaujamo svaru kokvedēja\r\n transportam. Pēc katras kokvedēju mašīnas uzkraušanās no meža ceļa novākt ciršanas atliekas.\r\n
  • \r\n
  • \r\n Pirms transportēšanas uzsākšanas pārliecināties par meža ceļa pieejamību, izmantojot LVM publiskajos\r\n datos (Kartes - LVM GEO, LVM GEO mobilā aplikācija) pieejamo informāciju par LVM ceļu\r\n aprobežojumiem.\r\n
  • \r\n
  • \r\n Saglabāt medību infrastruktūru (medību torņi, dzīvnieku barotavas, tilti, laipas), informēt LVM\r\n kontaktpersonu, ja izvietotā medību infrastruktūra traucē darbu izpildi.\r\n
  • \r\n
  • \r\n Nekavējoties informēt LVM kontaktpersonu, ja darbības laikā meža zemei vai meža infrastruktūras\r\n objektam vai meža autoceļam radīti bojājumi un vienoties par turpmāko rīcību.\r\n
  • \r\n
  • \r\n Darbības veicējs pilnībā uzņemas atbildību, tai skaitā zaudējumu atlīdzināšanu, par meža zemes un\r\n meža infrastruktūras objektu, tsk. meža autoceļu izmantošanas laikā radītajiem bojājumiem vai\r\n zaudējumiem LVM, kas radušies darbības rezultātā vai normatīvo aktu pārkāpumu rezultātā, tanī skaitā\r\n par pārkāpumiem, ko veikušas piesaistītas trešās personas vai apakšuzņēmēji.\r\n
  • \r\n
  • \r\n Ja tiks konstatēts, ka darbības rezultātā radīti bojājumi augošiem kokiem (nav zaudēta to\r\n augtspēja), LVM aprēķinās zaudējumus EUR 70.00 (septiņdesmit euro 00 centu) apmērā, par katru bojāto\r\n koku, kas jāsedz personai, kura veic saskaņotās darbības.\r\n
  • \r\n
  • \r\n Ja veikto darbu gaitā tiek bojāta vai iznīcināta kāda no robežzīmēm, darbības veicējs to atjauno\r\n atbilstoši Ministru kabineta noteikumiem Nr.1019 “Zemes kadastrālās uzmērīšanas noteikumi” par\r\n saviem līdzekļiem.\r\n
  • \r\n
  • \r\n Pēc darbības pabeigšanas, ne vēlāk kā 3 dienu laikā, informēt LVM kontaktpersonu par darbu\r\n pabeigšanu.\r\n
  • \r\n
  • \r\n Ja laikapstākļu dēļ LVM ir noteikusi pārvietošanās ierobežojumus meža autoceļiem, tai skaitā, ja\r\n risu izlīdzināšanu nav bijis iespējams tehniski veikt meža ceļa stāvokļa dēļ, tad attiecīgā meža\r\n autoceļa un/vai meža zemes (kokmateriālu pievešanas vietas), kā arī krautuves vietas labošanas\r\n darbi, saskaņojot ar LVM kontaktpersonu, uzsākami 30 dienu laikā pēc darbības pabeigšanas. Risas\r\n aizlīdzināmas divu nedēļu laikā pēc ierobežojumu atcelšanas vai pēc meža autoceļa tehniskā stāvokļa\r\n uzlabošanās.\r\n
  • \r\n
  • \r\n Laika periodā, kad Valsts meža dienests ir noteicis meža ugunsnedrošo laikposmu, jāievēro maksimāla\r\n piesardzība un jārīkojas atbilstoši Ministru kabineta 19.04.2016. noteikumu Nr.238 “Ugunsdrošības\r\n noteikumi” prasībām, kas attiecas uz uzturēšanos mežā. LVM aicina izvairīties no jebkādas atklātas\r\n liesmas veidošanas mežā vai tiešā tā tuvumā, vai veikt jebkuru citu darbību, kas var izraisīt\r\n ugunsgrēku.\r\n
  • \r\n
  • \r\n Tiešo kontroli par LVM prasību ievērošanu veic LVM kontaktpersona, vispārējo kontroli par normatīvo\r\n aktu noteikumu ievērošanu ir tiesības veikt jebkuram LVM darbiniekam. Nosacījumu neievērošanas\r\n gadījumā, LVM kontaktpersonai ir tiesības pieprasīt Darbības meža zemē un meža infrastruktūras\r\n objektos pārtraukšanu un Darbības vietas sakārtošanu sākotnējā stāvoklī.\r\n
  • \r\n
\r\n \r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { MutableRefObject, useEffect, useRef, useState } from \"react\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { Map } from \"ol\";\r\nimport { DrawingContextProvider } from \"../Contexts/DrawingContext\";\r\nimport { PopupBody } from \"../Popups/Popup\";\r\nimport { DrawingTools } from \"./Drawing/DrawingTools\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { useMap } from \"../Map/useMap\";\r\nimport { LayersMenu } from \"../Popups/LayersMenu\";\r\nimport { HelpPopup } from \"../Popups/HelpPopup\";\r\nimport { BasemapSwitch } from \"../Map/BasemapSwitch\";\r\nimport \"./DrawingForm.scss\";\r\n\r\nlet mapRef: MutableRefObject;\r\n\r\nexport const DrawingForm = (): JSX.Element => {\r\n const [forceUpdate, setForceUpdate] = useState(0);\r\n\r\n const { isMobile, hasMap, layersMenuVisible } = useAppContext();\r\n const { drawingInfoVisible } = useRegistrationContext();\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 document.getElementsByClassName(\"fs-container\")[0].classList.add(\"map-form\");\r\n setTimeout(() => mapRef.current.updateSize(), 0);\r\n hasMap && setForceUpdate(Date.now());\r\n }, [hasMap]);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n\r\n {mapRef.current ? (\r\n <>\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n ) : null}\r\n\r\n {drawingInfoVisible ? : null}\r\n \r\n );\r\n};\r\n\r\nexport const getMap = (): Map => mapRef.current;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { Feature } from \"ol\";\r\nimport { useRegistrationContext } from \"../../Contexts/RegistrationContext\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { DrawType } from \"../../Map/enums\";\r\nimport { SketchProps } from \"./SketchProps\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { DrawingButton } from \"./DrawingButton\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\n\r\nconst allowedQuantity = 5;\r\n\r\nexport const DrawLVMRoads = (): JSX.Element => {\r\n const { clickedFeatures, setClickedFeatures, drawType } = useAppContext();\r\n const { drawnFeatures } = useRegistrationContext();\r\n const { addFromSearch, selectedFeature, setSelectedFeature } = useDrawingContext();\r\n\r\n const [editFeature, setEditFeature] = useState(undefined);\r\n const [noteFeatures, setNoteFeatures] = useState([\r\n ...drawnFeatures.filter((f) => f.get(\"DRAWTYPE\") === DrawType.PolylineLvmRoad)\r\n ]);\r\n\r\n useEffect(() => {\r\n setNoteFeatures([...drawnFeatures.filter((f) => f.get(\"DRAWTYPE\") === DrawType.PolylineLvmRoad)]);\r\n }, [drawnFeatures]);\r\n\r\n useEffect(() => {\r\n const clickedLVMRoadFeature =\r\n clickedFeatures &&\r\n clickedFeatures.length &&\r\n clickedFeatures.find(\r\n (f) =>\r\n f.get(\"DRAWTYPE\") === DrawType.PolylineLvmRoad &&\r\n f.get(\"OBJECTID\") &&\r\n !noteFeatures.find((noteFeature) => noteFeature.get(\"MASTERID\") === f.get(\"OBJECTID\"))\r\n );\r\n\r\n clickedLVMRoadFeature && noteFeatures.length < allowedQuantity && addSelected(clickedLVMRoadFeature);\r\n }, [clickedFeatures]);\r\n\r\n useEffect(() => {\r\n drawType !== DrawType.PolylineLvmRoad && setClickedFeatures(undefined);\r\n }, [drawType]);\r\n\r\n useEffect(() => {\r\n setEditFeature(selectedFeature);\r\n }, [selectedFeature]);\r\n\r\n const addSelected = (clickedLVMRoad: Feature) => {\r\n addFromSearch(createFeature(clickedLVMRoad));\r\n setClickedFeatures(undefined);\r\n };\r\n\r\n const createFeature = (clickedLVMRoad?: Feature) => {\r\n const newFeature = new Feature();\r\n newFeature.setGeometry(clickedLVMRoad.getGeometry());\r\n newFeature.setProperties({\r\n TYPE: 1,\r\n DRAWTYPE: DrawType.PolylineLvmRoad,\r\n MASTERID: Number(clickedLVMRoad.get(\"OBJECTID\")),\r\n MASTERNAME: clickedLVMRoad.get(\"ROADSUBTYPE\") === 2 ? clickedLVMRoad.get(\"ROADNAME\") : \"Dabiska brauktuve\"\r\n });\r\n return newFeature;\r\n };\r\n\r\n const onClickToolbar = (feature: Feature) => {\r\n setEditFeature(feature);\r\n setSelectedFeature(feature);\r\n };\r\n\r\n const title = `LVM autoceļi (${noteFeatures.length || 0}/${allowedQuantity})`;\r\n\r\n return (\r\n \r\n
\r\n = allowedQuantity}\r\n >\r\n
\r\n {noteFeatures &&\r\n noteFeatures.map((f, i) => (\r\n
\r\n {editFeature && editFeature.get(\"TEMPID\") === f.get(\"TEMPID\") ? (\r\n \r\n ) : null}\r\n onClickToolbar(f)}\r\n >\r\n
\r\n {f.get(\"MASTERNAME\") || \"bez nosaukuma\"}\r\n
\r\n
\r\n
\r\n ))}\r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Feature } from \"ol\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { useRegistrationContext } from \"../../Contexts/RegistrationContext\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { DrawType } from \"../../Map/enums\";\r\nimport { DrawingButton } from \"./DrawingButton\";\r\nimport { SketchProps } from \"./SketchProps\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\n\r\nconst allowedQuantity = 1;\r\n\r\nexport const DrawProperty = (): JSX.Element => {\r\n const { identifiedFeatures, setLocateFeature, drawType } = useAppContext();\r\n const { drawnFeatures } = useRegistrationContext();\r\n const { addFromSearch, propertyNote, selectedFeature, setSelectedFeature } = useDrawingContext();\r\n\r\n const [editMode, setEditmode] = useState(true);\r\n const [noteFeature, setNoteFeature] = useState(\r\n drawnFeatures.length && drawnFeatures.find((f) => f.get(\"DRAWTYPE\") === DrawType.PolygonProperty)\r\n );\r\n\r\n useEffect(() => {\r\n drawnFeatures && setNoteFeature(drawnFeatures.find((f) => f.get(\"DRAWTYPE\") === DrawType.PolygonProperty));\r\n }, [drawnFeatures]);\r\n\r\n useEffect(() => {\r\n if (noteFeature) {\r\n return;\r\n }\r\n const clickedPropertyFeature =\r\n identifiedFeatures &&\r\n identifiedFeatures.length &&\r\n identifiedFeatures.find((f) => f && f.get(\"Zemes vienības kadastra apzīmējums\"));\r\n\r\n clickedPropertyFeature && setLocateFeature(clickedPropertyFeature);\r\n clickedPropertyFeature && addSelected(clickedPropertyFeature);\r\n }, [identifiedFeatures]);\r\n\r\n useEffect(() => {\r\n selectedFeature && setEditmode(noteFeature && noteFeature.get(\"TEMPID\") === selectedFeature.get(\"TEMPID\"));\r\n }, [selectedFeature]);\r\n\r\n useEffect(() => {\r\n noteFeature && noteFeature.set(\"MASTERNAME\", propertyNote);\r\n noteFeature && !propertyNote && setSelectedFeature(noteFeature);\r\n }, [propertyNote, noteFeature]);\r\n\r\n useEffect(() => {\r\n drawType !== DrawType.PolygonProperty && setLocateFeature(undefined);\r\n }, [drawType]);\r\n\r\n const addSelected = (clicked: Feature) => {\r\n addFromSearch(createFeature(clicked));\r\n };\r\n\r\n const createFeature = (clicked: Feature) => {\r\n const newFeature = new Feature();\r\n newFeature.setGeometry(clicked.getGeometry());\r\n newFeature.setProperties({\r\n TYPE: 1,\r\n DRAWTYPE: DrawType.PolygonProperty,\r\n MASTERID: Number(clicked.get(\"OBJECTID\")),\r\n CADASTER: clicked.get(\"Zemes vienības kadastra apzīmējums\")\r\n // MASTERNAME: this is required to fill by user. Will be copied from DESCRIPTION\r\n });\r\n return newFeature;\r\n };\r\n\r\n const onClickToolbar = () => {\r\n setEditmode(true);\r\n setSelectedFeature(noteFeature);\r\n };\r\n\r\n const title = `Īpašums (${noteFeature ? 1 : 0}/${allowedQuantity})`;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {noteFeature ? (\r\n <>\r\n {editMode ? (\r\n setEditmode(false)}\r\n >\r\n ) : null}\r\n
\r\n
\r\n {propertyNote ? {propertyNote + \", \"} : null}\r\n {\"kad.apz. \" + noteFeature.get(\"CADASTER\")}\r\n
\r\n
setLocateFeature(noteFeature)}>\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 { useRegistrationContext } from \"../../Contexts/RegistrationContext\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { DrawType } from \"../../Map/enums\";\r\nimport { DrawingButton } from \"./DrawingButton\";\r\nimport { SketchProps } from \"./SketchProps\";\r\n\r\nconst allowedQuantity = 3;\r\n\r\nexport const DrawRoads = (): JSX.Element => {\r\n const { drawnFeatures } = useRegistrationContext();\r\n const noteFeatures = drawnFeatures.filter((f) => f.get(\"DRAWTYPE\") === DrawType.PolylineRoad);\r\n const adddedFeatures = noteFeatures.length ? noteFeatures.length : 0;\r\n const title = `Pievešanas ceļš (${adddedFeatures}/${allowedQuantity})`;\r\n\r\n return (\r\n \r\n
\r\n = allowedQuantity}\r\n >\r\n
\r\n {noteFeatures &&\r\n noteFeatures.map((f) => )}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { useRegistrationContext } from \"../../Contexts/RegistrationContext\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { DrawType } from \"../../Map/enums\";\r\nimport { DrawingButton } from \"./DrawingButton\";\r\nimport { SketchProps } from \"./SketchProps\";\r\n\r\nconst allowedQuantity = 3;\r\n\r\nexport const DrawYards = (): JSX.Element => {\r\n const { drawnFeatures } = useRegistrationContext();\r\n\r\n const noteFeatures = drawnFeatures.filter((f) => f.get(\"DRAWTYPE\") === DrawType.PointYard);\r\n const adddedFeatures = noteFeatures.length ? noteFeatures.length : 0;\r\n const title = `Krautuves vieta (${adddedFeatures}/${allowedQuantity})`;\r\n\r\n return (\r\n \r\n
\r\n = allowedQuantity}\r\n >\r\n
\r\n {noteFeatures &&\r\n noteFeatures.map((f) => )}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { DrawType } from \"../../Map/enums\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\n\r\nexport interface IDrawingButton {\r\n iconClass: string;\r\n type: DrawType;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const DrawingButton = ({ iconClass, type, disabled }: IDrawingButton): JSX.Element => {\r\n const { drawType } = useAppContext();\r\n const { onDrawStart } = useDrawingContext();\r\n\r\n return (\r\n onDrawStart(type)}\r\n // key={iconClass + refreshDrawingTools}\r\n >\r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Accordion } from \"../../Elements/Accordion\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { DrawYards } from \"./DrawYards\";\r\nimport { DrawRoads } from \"./DrawRoads\";\r\nimport { DrawLVMRoads } from \"./DrawLVMRoads\";\r\nimport { DrawProperty } from \"./DrawProperty\";\r\nimport { useRegistrationContext } from \"../../Contexts/RegistrationContext\";\r\nimport { DrawType, PageId } from \"../../Map/enums\";\r\nimport { getMap } from \"../DrawingForm\";\r\nimport { Search } from \"./Search\";\r\nimport { AccordionInfo } from \"../../Elements/AccordionInfo\";\r\nimport { getIntersectedForestryCount, getLVMForestry } from \"../../Map/rest\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport \"./DrawingTools.scss\";\r\n\r\nconst formId = PageId.DrawingForm;\r\nconst minSetFeature = 1;\r\n\r\nconst infoStrings = {\r\n scaleForPointsWarning: \"Šī objekta iezīmēšana kartē ir iespējama mērogā no 500 m, lūdzu pietuviniet karti!\",\r\n scaleForLineAndAreaWarning: \"Šī objekta iezīmēšana kartē ir iespējama mērogā no 2 km, lūdzu pietuviniet karti!\",\r\n propertyAndPointsWarning: \"Īpašuma un krautuves vietas atzīme kartē ir obligāta!\",\r\n propertyWarning: \"Īpašuma vietas atzīme kartē ir obligāta!\",\r\n pointWarning: \"Krautuves vietas atzīme kartē ir obligāta!\",\r\n propertyNoteWarning: \"Nepieciešams īpašuma nosaukums!\"\r\n};\r\n\r\nexport const DrawingTools = (): JSX.Element => {\r\n const [validate, setValidate] = useState(0);\r\n const [propertyWarning, setPropertyWarning] = useState(true);\r\n const [pointWarning, setPointWarning] = useState(true);\r\n const [warnings, setWarnings] = useState([]);\r\n const [maxHeight, setMaxHeight] = useState(0);\r\n\r\n const { scaleWarning, setScaleWarning, drawType } = useAppContext();\r\n\r\n const { drawingMenuVisible } = useRegistrationContext();\r\n const {\r\n formFeature,\r\n validateForm,\r\n onFormUpdated,\r\n drawnFeatures,\r\n setOverlay,\r\n setLvmForestryData,\r\n setLvmForestryCount,\r\n setDrawingInfoVisible,\r\n setSearchInfoVisible\r\n } = useRegistrationContext();\r\n const { propertyNote } = useDrawingContext();\r\n\r\n const drawTypeRef = useRef(undefined);\r\n\r\n useEffect(() => {\r\n getMap().on(\"moveend\", () => setScaleWarning(isDrawingAllowed()));\r\n setMaxHeight(document.getElementsByClassName(\"map-container\")[0].clientHeight - 100);\r\n\r\n if (!localStorage.getItem(\"timberFlowFormPopup\")) {\r\n localStorage.setItem(\"timberFlowFormPopup\", JSON.stringify(\"shown\"));\r\n setDrawingInfoVisible(true);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const validateThisForm =\r\n ((validateForm.split(\"-\")[0] as unknown) as PageId) === formId ? Number(validateForm.split(\"-\")[1]) : 1;\r\n if (validateThisForm !== validate) {\r\n setValidate(validateThisForm);\r\n !warnings.length && !propertyWarning && !pointWarning && onFormValid();\r\n }\r\n }, [validateForm, validate, propertyWarning, pointWarning]);\r\n\r\n const onFormValid = async () => {\r\n setOverlay({ isLoading: true });\r\n\r\n const forestry = await getLVMForestry([drawnFeatures.find((df) => df.get(\"DRAWTYPE\") === \"PointYard\")]);\r\n if (forestry && forestry.data) {\r\n const forestryData = {\r\n LVMDistrictCode: forestry.data.LVMDISTRICTCODE,\r\n LVMDistrictName: forestry.data.LVMDISTRICTNAME,\r\n LVMForestryCode: forestry.data.LVMFORESTRYCODE,\r\n LVMForestryName: forestry.data.LVMFORESTRYNAME,\r\n LVMManagerName: forestry.data.MANAGERNAME,\r\n LVMManagerPhone: forestry.data.MANAGERPHONE,\r\n LVMManagerMail: forestry.data.MANAGEREMAIL\r\n };\r\n formFeature.setProperties(forestryData);\r\n setLvmForestryData(forestryData);\r\n }\r\n\r\n const forestryCount = await getIntersectedForestryCount(drawnFeatures);\r\n\r\n forestryCount &&\r\n forestryCount.data &&\r\n forestryCount.data.count &&\r\n setLvmForestryCount(forestryCount.data.count);\r\n setOverlay(null);\r\n\r\n onFormUpdated();\r\n };\r\n\r\n useEffect(() => {\r\n setPropertyWarning(isPropertySelected);\r\n setPointWarning(isPointSelected);\r\n }, [drawnFeatures]);\r\n\r\n useEffect(() => {\r\n drawTypeRef.current = drawType;\r\n setScaleWarning(isDrawingAllowed());\r\n }, [drawType]);\r\n\r\n useEffect(() => {\r\n const newWarnings = [];\r\n scaleWarning &&\r\n newWarnings.push(\r\n drawTypeRef.current === DrawType.PolylineRoad ||\r\n drawTypeRef.current === DrawType.PolylineLvmRoad ||\r\n drawTypeRef.current === DrawType.PolygonProperty\r\n ? infoStrings.scaleForLineAndAreaWarning\r\n : drawTypeRef.current === DrawType.PointYard && infoStrings.scaleForPointsWarning\r\n );\r\n pointWarning && newWarnings.push(infoStrings.pointWarning);\r\n propertyWarning && newWarnings.push(infoStrings.propertyWarning);\r\n !propertyWarning && !propertyNote && newWarnings.push(infoStrings.propertyNoteWarning);\r\n\r\n setWarnings(newWarnings);\r\n }, [scaleWarning, propertyWarning, pointWarning, propertyNote, drawType]);\r\n\r\n const isPointSelected =\r\n drawnFeatures.filter((f) => f.get(\"DRAWTYPE\") === DrawType.PointYard).length < minSetFeature;\r\n const isPropertySelected =\r\n drawnFeatures.filter((f) => f.get(\"DRAWTYPE\") === DrawType.PolygonProperty).length !== minSetFeature;\r\n\r\n const isDrawingAllowed = () =>\r\n !drawTypeRef || drawTypeRef.current === undefined\r\n ? false\r\n : drawTypeRef.current === DrawType.PolylineRoad ||\r\n drawTypeRef.current === DrawType.PolylineLvmRoad ||\r\n drawTypeRef.current === DrawType.PolygonProperty\r\n ? //@ts-ignore\r\n !(document.mapScale <= 111000) // 2km\r\n : //@ts-ignore\r\n !(document.mapScale <= 28000); // 500m\r\n\r\n return (\r\n <>\r\n
\r\n \r\n setSearchInfoVisible(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {warnings.length ? : null}\r\n \r\n \r\n );\r\n};\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { Feature } from \"ol\";\r\nimport { AccordionItem } from \"../../Elements/Accordion\";\r\nimport { executeQuery } from \"../../Map/rest\";\r\nimport { useAppContext } from \"../../Contexts/AppContext\";\r\nimport { config } from \"../../Map/config\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { DrawType } from \"../../Map/enums\";\r\nimport { SearchInfoButton } from \"../../Elements/SearchInfoButton\";\r\nimport { useRegistrationContext } from \"../../Contexts/RegistrationContext\";\r\nimport { SearchPopup } from \"../../Popups/SearchPopup\";\r\n\r\nconst maxResults = 5;\r\nconst searchConfig = config.search;\r\nexport const searchTitle = \"Meklēt īpašumu, ceļu vai pagastu\";\r\n\r\nexport const Search = (): JSX.Element => {\r\n const [text, setText] = useState(\"\");\r\n const [results, setResults] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [selected, setSelected] = useState();\r\n\r\n const { setLocateFeature } = useAppContext();\r\n const { drawnFeatures, searchInfoVisible } = useRegistrationContext();\r\n const { addFromSearch } = useDrawingContext();\r\n\r\n useEffect(() => {\r\n setLocateFeature(selected);\r\n }, [selected]);\r\n\r\n const executeSearch = useCallback(async () => {\r\n if (!text) {\r\n return;\r\n }\r\n setLoading(true);\r\n const queries = buildQueries(text);\r\n const queryResults = await doQuery(queries);\r\n setResults(queryResults.slice(0, maxResults));\r\n setLoading(false);\r\n }, [text]);\r\n\r\n const onChange = (e) => {\r\n setResults([]);\r\n setSelected(undefined);\r\n setText(e.target.value);\r\n };\r\n\r\n const onSelect = (selectedFeature: Feature) => {\r\n setSelected(selectedFeature);\r\n setText(getValue(selectedFeature));\r\n };\r\n\r\n const onClear = () => {\r\n setText(\"\");\r\n setSelected(undefined);\r\n setResults([]);\r\n };\r\n\r\n const onKeyDown = (e) => {\r\n e.key === \"Enter\" && executeSearch();\r\n };\r\n\r\n const onAddSelected = (e) => {\r\n e.stopPropagation();\r\n addFromSearch(createFeature());\r\n onClear();\r\n };\r\n\r\n const createFeature = () => {\r\n const newFeature = new Feature();\r\n newFeature.setGeometry(selected.getGeometry());\r\n newFeature.setProperties({\r\n TYPE: 1,\r\n DRAWTYPE: selected.get(\"DRAWTYPE\"),\r\n MASTERID: Number(selected.get(\"OBJECTID\"))\r\n });\r\n\r\n const cadaster = selected.get(\"CODE\");\r\n cadaster && newFeature.set(\"CADASTER\", cadaster);\r\n\r\n const roadName = selected.get(\"ROADNAME\");\r\n roadName && newFeature.set(\"MASTERNAME\", roadName);\r\n\r\n return newFeature;\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 {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 {getValue(result)}\r\n
\r\n ))}\r\n
\r\n
\r\n \r\n
\r\n {selected && (\r\n
setLocateFeature(selected)}>\r\n
\r\n \r\n
\r\n {selected.get(\"ROADNAME\") ||\r\n (selected.get(\"CODE\") &&\r\n !drawnFeatures.find((f) => f.get(\"DRAWTYPE\") === DrawType.PolygonProperty)) ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
{getValue(selected)}
\r\n
\r\n )}\r\n
\r\n {searchInfoVisible ? : null}\r\n \r\n );\r\n};\r\n\r\nconst buildQueries = (searchText: string) =>\r\n searchConfig.map((searchLayer) => ({\r\n layerId: searchLayer.layerId,\r\n url: searchLayer.url,\r\n field: searchLayer.field,\r\n params: {\r\n f: \"json\",\r\n where: \"UPPER(\" + searchLayer.field + \") LIKE '%\" + searchText.toUpperCase() + \"%'\",\r\n outFields: \"*\"\r\n }\r\n }));\r\n\r\nconst doQuery = async (queries) => {\r\n const results = [];\r\n for (const query of queries) {\r\n const features = await executeQuery(query.params, query.url, query.layerId);\r\n features.length && query.field === \"ROADNAME\"\r\n ? features.map((f) => f.set(\"DRAWTYPE\", DrawType.PolylineLvmRoad))\r\n : query.field === \"CODE\"\r\n ? features.map((f) => f.set(\"DRAWTYPE\", DrawType.PolygonProperty))\r\n : false;\r\n\r\n results.push(...features);\r\n }\r\n return results;\r\n};\r\n\r\nconst getValue = (feature: Feature) => {\r\n let value;\r\n for (const searchLayer of config.search) {\r\n value = feature.get(searchLayer.field);\r\n if (value) {\r\n break;\r\n }\r\n }\r\n return value;\r\n};\r\n","import React, { useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { Feature } from \"ol\";\r\nimport { useDrawingContext } from \"../../Contexts/DrawingContext\";\r\nimport { DrawType } from \"../../Map/enums\";\r\n\r\nexport interface ISketchProps {\r\n feature: Feature;\r\n placeholder?: string;\r\n required?: boolean;\r\n onBlur?: () => void;\r\n}\r\nexport const SketchProps = ({ feature, placeholder, required, onBlur }: ISketchProps): JSX.Element => {\r\n const isProperty = feature.get(\"DRAWTYPE\") === DrawType.PolygonProperty;\r\n\r\n const [note, setNote] = useState(\r\n (isProperty ? feature.get(\"MASTERNAME\") : feature.get(\"DESCRIPTION\")) || \"\"\r\n );\r\n const { onNoteChange, onDeleteFeature, selectedFeature, setSelectedFeature } = useDrawingContext();\r\n\r\n const onChange = (e) => {\r\n setNote(e.target.value);\r\n feature.set(isProperty ? \"MASTERNAME\" : \"DESCRIPTION\", e.target.value);\r\n onNoteChange();\r\n };\r\n\r\n return (\r\n \r\n ) => onChange(e)}\r\n onFocus={() => setSelectedFeature(feature)}\r\n onBlur={onBlur}\r\n value={note}\r\n />\r\n
onDeleteFeature(feature)}>\r\n \r\n
\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { ChangeEvent, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { IFormConfig } from \"../Map/config\";\r\nimport { Input } from \"../Map/enums\";\r\nimport { IFormData } from \"./formFields\";\r\nimport { InputField } from \"./InputField\";\r\n\r\nexport interface IFormProps {\r\n fieldConfig: IFormConfig;\r\n onChange: (data: IFormData) => void;\r\n validateForm: number;\r\n onFormValidated: (isValid: boolean) => void;\r\n resetForm: number;\r\n formValues?: IFormData;\r\n}\r\n\r\nexport const Form = ({\r\n fieldConfig,\r\n onChange,\r\n validateForm,\r\n onFormValidated,\r\n resetForm,\r\n formValues\r\n}: IFormProps): JSX.Element => {\r\n const [formData, setFormData] = useState({});\r\n const [validate, setValidate] = useState(1);\r\n\r\n const formValidations = useRef({});\r\n\r\n const visibleFields = fieldConfig.fields.filter(\r\n (field) =>\r\n !field.visibilityDeterminantField ||\r\n (formData[field.visibilityDeterminantField] &&\r\n formData[field.visibilityDeterminantField] === field.visibilityDeterminantFieldVisibleValue)\r\n );\r\n\r\n const onChanged = (e: ChangeEvent) => {\r\n const data = { ...formData };\r\n data[e.target.name] = e.target.value;\r\n setFormData(data);\r\n onChange(data);\r\n };\r\n\r\n const onFieldValidated = useCallback(\r\n (name: string, isValid: boolean, i: number) => {\r\n if (!formValidations || !formValidations.current) {\r\n return;\r\n }\r\n const visibleFieldNames = fieldConfig.fields.filter(\r\n (f) => !f.visibilityDeterminantField || formData[f.visibilityDeterminantField]\r\n );\r\n const validations = { ...formValidations.current };\r\n validations[name] = isValid;\r\n\r\n const visibleFieldValidations = Object.keys(validations)\r\n .filter((key) => visibleFieldNames.find((field) => field.field === key))\r\n .reduce((obj, key) => {\r\n obj[key] = validations[key];\r\n return obj;\r\n }, {});\r\n\r\n formValidations.current = visibleFieldValidations;\r\n\r\n i + 1 === visibleFieldNames.length &&\r\n onFormValidated(!Object.values(formValidations.current).includes(false));\r\n },\r\n [formData]\r\n );\r\n\r\n useEffect(() => {\r\n setValidate(validateForm);\r\n }, [validateForm]);\r\n\r\n useEffect(() => {\r\n setFormData({});\r\n }, [resetForm]);\r\n\r\n useEffect(() => {\r\n if (formValues) {\r\n setFormData(formValues);\r\n onChange(formValues);\r\n }\r\n }, [formValues]);\r\n\r\n return (\r\n
\r\n {visibleFields.map((field, i) =>\r\n field.type === Input.Label ? (\r\n
\r\n {field.title}\r\n
\r\n ) : (\r\n onFieldValidated(field.field, isValid, i)}\r\n value={(formData && formData[field.field]) || \"\"}\r\n key={field.title + i}\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 DatePicker from \"react-datepicker\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Checkbox } from \"../Elements/Checkbox\";\r\nimport { IInputFieldConfig } from \"../Map/config\";\r\nimport { Input } from \"../Map/enums\";\r\nimport { InfoButton } from \"../Popups/Info/InfoButton\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { isWorkingDay } from \"../Map/utils\";\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\n\r\nexport interface IInputField {\r\n config: IInputFieldConfig;\r\n onChange: CallableFunction;\r\n validate: number;\r\n onValidate: (isValid: boolean) => void;\r\n value?: any;\r\n}\r\n\r\nexport const InputField = ({ config, onChange, validate, onValidate, value }: IInputField): JSX.Element => {\r\n const [valid, setValid] = useState(true);\r\n const { rawData } = useRegistrationContext();\r\n\r\n const changeValue = (e: React.ChangeEvent) => {\r\n const isLengthExceeded = e.target.value.length > config.maxlength;\r\n setValid(!isLengthExceeded);\r\n !isLengthExceeded && onChange(e);\r\n };\r\n\r\n useEffect(() => {\r\n if (validate === 0) {\r\n setValid(false);\r\n } else if (validate === 1) {\r\n setValid(true);\r\n } else {\r\n const isValid =\r\n !config.required && !value\r\n ? true\r\n : config.required && !value\r\n ? false\r\n : config.validationFn\r\n ? config.validationFn(\r\n value,\r\n config.validationComparator &&\r\n rawData[config.validationComparator] &&\r\n rawData[config.validationComparator].toString()\r\n )\r\n : true;\r\n setValid(isValid);\r\n onValidate(isValid);\r\n }\r\n }, [validate, value]);\r\n\r\n return (\r\n \r\n
\r\n {config.type === Input.Checkbox ? (\r\n \r\n ) : config.type === Input.Select ? (\r\n \r\n ) : config.type === Input.TextArea ? (\r\n \r\n ) : config.type === Input.Date ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n {!valid || config.hasError ? (\r\n {config.validationErrorMessage || \"Kļūda!\"}\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst InputSelect = ({\r\n config,\r\n value,\r\n changeValue\r\n}: {\r\n config: IInputFieldConfig;\r\n value: string;\r\n changeValue: CallableFunction;\r\n}) => {\r\n const { options } = useRegistrationContext();\r\n\r\n return (\r\n <>\r\n \r\n
\r\n ) => changeValue(e)}\r\n >\r\n {options &&\r\n options[config.field] &&\r\n options[config.field].map((cv) => (\r\n \r\n ))}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst InputCheckbox = ({\r\n config,\r\n value,\r\n changeValue\r\n}: {\r\n config: IInputFieldConfig;\r\n value: boolean;\r\n changeValue: CallableFunction;\r\n}) => (\r\n <>\r\n \r\n \r\n changeValue(({\r\n target: {\r\n value: checked,\r\n name: config.field\r\n }\r\n } as unknown) as React.ChangeEvent)\r\n }\r\n >\r\n \r\n);\r\n\r\nconst InputText = ({\r\n config,\r\n value,\r\n changeValue\r\n}: {\r\n config: IInputFieldConfig;\r\n value: string;\r\n changeValue: CallableFunction;\r\n}) => (\r\n <>\r\n \r\n ) => changeValue(e)}\r\n />\r\n \r\n);\r\n\r\nconst InputTextArea = ({\r\n config,\r\n value,\r\n changeValue\r\n}: {\r\n config: IInputFieldConfig;\r\n value: string;\r\n changeValue: CallableFunction;\r\n}) => (\r\n <>\r\n \r\n ) => changeValue(e)}\r\n />\r\n \r\n);\r\n\r\nconst InputDate = ({\r\n config,\r\n value,\r\n changeValue\r\n}: {\r\n config: IInputFieldConfig;\r\n value: string;\r\n changeValue: CallableFunction;\r\n}) => {\r\n const onDateChange = (date: Date) => {\r\n const formated = date\r\n ? date.getFullYear() +\r\n \"-\" +\r\n (date.getMonth() + 1).toString().padStart(2, \"0\") +\r\n \"-\" +\r\n date.getDate().toString().padStart(2, \"0\")\r\n : null;\r\n\r\n changeValue({ target: { name: config.field, value: formated } });\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
\r\n e.target.blur()}\r\n popperModifiers={[\r\n {\r\n name: \"preventOverflow\",\r\n options: {\r\n rootBoundary: \"viewport\",\r\n tether: false,\r\n altAxis: true,\r\n padding: { bottom: 100 }\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 } from \"react\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { AliasSection, AttachmentSection, Section, SnapshotSection } from \"../Registration/SummarySection\";\r\nimport \"./SummaryForm.scss\";\r\n\r\nexport const SummaryForm = (): JSX.Element => {\r\n const {\r\n summaryData,\r\n setSummaryData,\r\n getSummaryJson,\r\n attachments,\r\n snapshot,\r\n setOverlay,\r\n drawnFeatures\r\n } = useRegistrationContext();\r\n\r\n useEffect(() => {\r\n setOverlay({ isLoading: true });\r\n setData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setData();\r\n }, [attachments]);\r\n\r\n const setData = async () => {\r\n const data = await getSummaryJson();\r\n setSummaryData(data);\r\n setOverlay(null);\r\n };\r\n\r\n return summaryData ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {attachments ? (\r\n \r\n ) : null}\r\n {drawnFeatures && drawnFeatures.length ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n ) : null;\r\n};\r\n","import * as React from \"react\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { config, IInputFieldConfig } from \"../Map/config\";\r\nimport { getFirstAllowedWorkday, addDays } from \"../Map/utils\";\r\nimport { Input, PageId } from \"../Map/enums\";\r\nimport { IEsriFieldInfo, updateFeatures } from \"../Map/rest\";\r\nimport { UploadSection } from \"../Registration/SummarySection\";\r\nimport { Form } from \"./Form\";\r\nimport \"./TermForm.scss\";\r\n\r\nconst formId = PageId.TermForm;\r\n\r\nexport const TermForm = (): JSX.Element => {\r\n const [isFormValid, setIsFormValid] = useState(null);\r\n const [formData, setFormData] = useState({});\r\n const [error, setError] = useState(false);\r\n\r\n const { fieldInfos } = useAppContext();\r\n\r\n const {\r\n formFeature,\r\n rawData,\r\n setRawData,\r\n setOverlay,\r\n validateForm,\r\n resetForm,\r\n onFormUpdated,\r\n setProceedClicked,\r\n proceedClicked\r\n } = useRegistrationContext();\r\n\r\n useEffect(() => {\r\n setMinMaxDay();\r\n }, [formFeature]);\r\n\r\n useEffect(() => {\r\n if (isFormValid && !formFeature) {\r\n console.log(\"Can not update feature without OBJECTID\");\r\n setError(true);\r\n return;\r\n }\r\n isFormValid && proceedClicked && onFormValid();\r\n }, [isFormValid, proceedClicked]);\r\n\r\n const onFormValid = async () => {\r\n setOverlay({ isLoading: true });\r\n const updateResults = await updateFeatures([appendFormData()], \"3\");\r\n if (!updateResults[0].success) {\r\n return;\r\n }\r\n setOverlay(null);\r\n onFormUpdated();\r\n };\r\n\r\n const appendFormData = useCallback(() => {\r\n const newprops = {};\r\n config.forms.termForm.fields.map((field) => {\r\n newprops[field.field] =\r\n field.type === Input.Checkbox\r\n ? convertBooleanToCodedValue(\r\n fieldInfos.find((info) => info.name === field.field),\r\n field,\r\n formData\r\n )\r\n : formData[field.field];\r\n });\r\n formFeature.setProperties(newprops);\r\n return formFeature;\r\n }, [formData]);\r\n\r\n const onFormValidated = (isValid: boolean) => {\r\n isValid ? setFormData(rawData) : setProceedClicked(false);\r\n setIsFormValid(isValid ? Date.now() : null);\r\n };\r\n\r\n const onFormChanged = (data) => {\r\n const dateFields = config.forms.termForm.fields.filter(\r\n (f) => f.type === Input.Date && (f.maxDateField || f.minDateField)\r\n );\r\n dateFields && validateDateFromTo(data, dateFields);\r\n\r\n setRawData(data);\r\n };\r\n\r\n const validate =\r\n ((validateForm.split(\"-\")[0] as unknown) as PageId) === formId ? Number(validateForm.split(\"-\")[1]) : 1;\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n Ar cirsmas izstrādi saistīto darbību (sortimentu pievešana, nokraušana, transportēšana) LVM meža\r\n zemē un/vai meža ceļu izmantošanu drīkst uzsākt tikai pēc rakstiska LVM saskaņojuma saņemšanas uz\r\n Jūsu norādīto pasta vai elektronisko pasta adresi.\r\n
\r\n Pieteikuma apstrādes un izskatīšanas termiņš ir aptuveni 5 darba dienas.\r\n
\r\n \r\n \r\n {error ?
Kļūda servera savienojumā!
: null}\r\n \r\n );\r\n};\r\n\r\nconst validateDateFromTo = (data, dateFields) => {\r\n Object.keys(data).map((item) => {\r\n if (!dateFields.find((dataField) => dataField.field === item)) {\r\n return;\r\n }\r\n\r\n const currentFieldConfig = config.forms.termForm.fields.find((f) => f.field === item);\r\n\r\n if (currentFieldConfig.maxDateField || currentFieldConfig.minDateField) {\r\n config.forms.termForm.fields.map((f) => {\r\n f.field === currentFieldConfig.maxDateField && (f.minDate = data[item]);\r\n f.field === currentFieldConfig.minDateField && (f.maxDate = data[item]);\r\n });\r\n }\r\n\r\n if (currentFieldConfig.minDateField && data[currentFieldConfig.minDateField]) {\r\n const isDateValid = data[item] >= data[currentFieldConfig.minDateField];\r\n\r\n config.forms.termForm.fields.map((f) => {\r\n f.field === currentFieldConfig.minDateField &&\r\n (f.hasError = currentFieldConfig.hasError = !isDateValid);\r\n });\r\n }\r\n if (currentFieldConfig.maxDateField && data[currentFieldConfig.maxDateField]) {\r\n const isDateValid = data[item] <= data[currentFieldConfig.maxDateField];\r\n\r\n config.forms.termForm.fields.map((f) => {\r\n f.field === currentFieldConfig.maxDateField &&\r\n (f.hasError = currentFieldConfig.hasError = !isDateValid);\r\n });\r\n }\r\n });\r\n};\r\n\r\nconst convertBooleanToCodedValue = (fieldConfig: IEsriFieldInfo, f: IInputFieldConfig, formData) =>\r\n fieldConfig && fieldConfig.domain && fieldConfig.domain.codedValues\r\n ? fieldConfig.domain.codedValues.find((cv) =>\r\n formData[f.field] ? cv.name.toUpperCase() === \"JĀ\" : cv.name.toUpperCase() === \"NĒ\"\r\n ).code\r\n : formData[f.field];\r\n\r\nconst getDate = (date: Date) => {\r\n return (\r\n date.getFullYear() +\r\n \"-\" +\r\n (date.getMonth() + 1).toString().padStart(2, \"0\") +\r\n \"-\" +\r\n date.getDate().toString().padStart(2, \"0\")\r\n );\r\n};\r\nconst setMinMaxDay = () => {\r\n config.forms.termForm.fields.map((f) => {\r\n if (f.field === \"DATEFROM\" || f.field === \"DATETO\") {\r\n f.minDate = getDate(getFirstAllowedWorkday(5));\r\n f.maxDate = getDate(addDays(new Date(Date.now()), 365));\r\n }\r\n });\r\n};\r\n","import * as React from \"react\";\r\nimport { useRef, useState } from \"react\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { UploadList } from \"./UploadList\";\r\nimport \"./Upload.scss\";\r\n\r\nconst acceptTypes = [\r\n \"application/msword\",\r\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\r\n \"application/vnd.ms-excel\",\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n \"application/pdf\",\r\n \"application/gpx+xml\",\r\n \"application/zip\",\r\n \"application/vnd.etsi.asic-e+zip\",\r\n \"application/vnd\",\r\n \"application/edoc\",\r\n \"image/png\",\r\n \"image/jpg\",\r\n \"image/jpeg\",\r\n \".gpx\",\r\n \".kml\",\r\n \".kmz\",\r\n \".edoc\",\r\n \"\"\r\n];\r\nconst allowedTypes = new Set(acceptTypes);\r\n\r\nexport const Upload = (): JSX.Element => {\r\n const { attachments, setAttachments } = useRegistrationContext();\r\n const [uploadList, setUploadList] = useState(attachments);\r\n\r\n const inputRef = useRef();\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) => {\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) => {\r\n !uploadList || !uploadList.length\r\n ? addFile(file)\r\n : !Array.from(uploadList).find((f) => f.name === file.name) && addFile(file);\r\n });\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 setAttachments(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","import * as React from \"react\";\r\nimport \"./Upload.scss\";\r\n\r\nexport interface IUploadList {\r\n onChange: (fileList: FileList) => void;\r\n fileList: FileList;\r\n}\r\n\r\nexport const UploadList = ({ onChange, fileList }: IUploadList): JSX.Element => {\r\n const onRemove = (name: string) => {\r\n if (!fileList.length) {\r\n return;\r\n }\r\n\r\n const dt = new DataTransfer();\r\n Array.from(fileList).map((file) => file.name !== name && dt.items.add(file));\r\n onChange(dt.files);\r\n };\r\n\r\n return (\r\n
\r\n {fileList && fileList.length\r\n ? Array.from(fileList).map((file) => (\r\n \r\n onRemove(file.name)}>\r\n \r\n \r\n \r\n {file.name}\r\n \r\n \r\n ))\r\n : null}\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { Map } from \"ol\";\r\nimport mammaImage from \"../img/basemaps/mamma.png\";\r\nimport ortoImage from \"../img/basemaps/orto2.png\";\r\nimport topo10Image from \"../img/basemaps/topo10.png\";\r\nimport { config } from \"../Map/config\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { Basemaps } from \"./enums\";\r\nimport \"./BasemapSwitch.scss\";\r\n\r\nexport const BasemapSwitch = ({ map }: { map: Map }): JSX.Element => {\r\n const { basemap, setBasemap } = useAppContext();\r\n\r\n return (\r\n
\r\n {config.basemaps.map((baseMap) => (\r\n \r\n \r\n
\r\n ))}\r\n \r\n );\r\n};\r\n","import { Attribution, Control } from \"ol/control\";\r\n\r\nexport class AttributionButton extends Control {\r\n constructor() {\r\n super({ element: undefined });\r\n return new Attribution({\r\n collapsible: false\r\n });\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { FC } from \"react\";\r\nimport { Control } from \"ol/control\";\r\n\r\nconst Drawing: FC<{ this: Control; onToggle: CallableFunction }> = (props) => (\r\n
props.onToggle()} title={\"Zīmēšana\"}>\r\n \r\n
\r\n);\r\n\r\nexport class DrawingButton extends Control {\r\n constructor(toggleDrawingMenu: CallableFunction) {\r\n const element = document.createElement(\"div\");\r\n element.className = \"timberflowform-map-button draw-container ol-unselectable ol-control\";\r\n super({\r\n element\r\n });\r\n ReactDOM.render(, element);\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { FC, useEffect, useRef, useState } from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { Point } from \"ol/geom\";\r\nimport { Control } from \"ol/control\";\r\nimport { Vector as VectorSource } from \"ol/source\";\r\nimport { Vector as VectorLayer } from \"ol/layer\";\r\nimport { Feature } 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\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 GeoLocation: FC<{ this: Control }> = (props) => {\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 map = props.this.getMap();\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 moveToPoint();\r\n setLocationState(LocationState.Tracking);\r\n } else if (locationState === LocationState.Tracking && !isMapMoving) {\r\n //@ts-ignore\r\n moveToPoint(map.getView().getZoom());\r\n }\r\n }, [position]);\r\n\r\n const moveToPoint = async (zoom?) => {\r\n setIsMapMoving(true);\r\n await mapGoTo(zoom);\r\n setIsMapMoving(false);\r\n };\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 (zoom) => {\r\n //@ts-ignore\r\n await map.getView().fit(centerGraphic.current.getGeometry(), { duration: 1000, maxZoom: zoom || 15 });\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 return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport class LocationButton extends Control {\r\n constructor() {\r\n const element = document.createElement(\"div\");\r\n element.className = \"timberflowform-map-button location-container ol-unselectable ol-control\";\r\n super({\r\n element\r\n });\r\n ReactDOM.render(, element);\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { FC } from \"react\";\r\nimport { Control } from \"ol/control\";\r\nimport { Point } from \"ol/geom\";\r\nimport { config } from \"../config\";\r\n\r\nexport const Home: FC<{ this: Control }> = (props) => {\r\n const onClick = () => {\r\n const view = props.this.getMap().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\r\nexport class HomeButton extends Control {\r\n constructor() {\r\n const element = document.createElement(\"div\");\r\n element.className = \"timberflowform-map-button home-container ol-unselectable ol-control\";\r\n super({\r\n element\r\n });\r\n ReactDOM.render(, element);\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { FC } from \"react\";\r\nimport { Control } from \"ol/control\";\r\n\r\nexport const Layers: FC<{ this: Control; onToggle: CallableFunction }> = (props) => (\r\n <>\r\n
props.onToggle()} title={\"Papildus slāņi\"}>\r\n \r\n
\r\n \r\n);\r\nexport class LayersButton extends Control {\r\n constructor(toggleLayersMenu: CallableFunction) {\r\n const element = document.createElement(\"div\");\r\n element.className = \"timberflowform-map-button layers-container ol-unselectable ol-control\";\r\n super({\r\n element\r\n });\r\n ReactDOM.render(, element);\r\n }\r\n}\r\n","import { Control, ScaleLine } from \"ol/control\";\r\n\r\nexport class ScaleControl extends Control {\r\n constructor() {\r\n super({ element: undefined });\r\n return new ScaleLine({ className: \"ol-scale-line scale-container ol-control\" });\r\n }\r\n}\r\n","import { Basemaps, Condition, Input } from \"./enums\";\r\n\r\nexport interface IConfig {\r\n default: IDefault;\r\n basemaps: (IBasemapTileXYZ | IBasemapTileWMS)[];\r\n layers: ILayerConfig[];\r\n geoLocation?: ILocation;\r\n forms: IForms;\r\n search: ISearchLayer[];\r\n identify: IIdentifyConfig;\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 drawingLayerId: string;\r\n tileGrid: ITileGrid;\r\n}\r\n\r\nexport interface ITileGrid {\r\n origin: number[];\r\n tileSize?: number[];\r\n resolutions: number[];\r\n}\r\n\r\nexport interface IBasemapTileXYZ {\r\n id: string;\r\n title: string;\r\n type: string;\r\n visible: boolean;\r\n image: string;\r\n source: {\r\n url: string;\r\n maxZoom: number;\r\n projection: string;\r\n crossOrigin: string;\r\n };\r\n}\r\nexport interface IBasemapTileWMS {\r\n id: string;\r\n title: string;\r\n type: string;\r\n visible: boolean;\r\n image: string;\r\n source: {\r\n url: string;\r\n params?: ILayerParams;\r\n projection: string;\r\n serverType?: string;\r\n crossOrigin: string;\r\n };\r\n}\r\nexport interface ILayerConfig {\r\n id: string;\r\n title: string;\r\n type: string;\r\n copyright: string;\r\n url: string;\r\n crossOrigin: string;\r\n visible: boolean;\r\n showInToc: boolean;\r\n zIndex: number;\r\n minResolution?: number;\r\n maxResolution?: number;\r\n extent?: number[];\r\n params?: ILayerParams;\r\n}\r\n\r\nexport interface ILayerParams {\r\n LAYERS?: string;\r\n FORMAT?: string;\r\n transparent?: boolean;\r\n}\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 IForms {\r\n textFilter: IInputFieldConfig;\r\n individualApplicantForm: IFormConfig;\r\n companyApplicantForm: IFormConfig;\r\n termForm: IFormConfig;\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 visibilityDeterminantFieldVisibleValue?: string | boolean | number;\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\n\r\nexport interface ISearchLayer {\r\n url: string;\r\n layerId: string;\r\n field: string;\r\n}\r\n\r\nexport interface IIdentifyConfig {\r\n url: string;\r\n layers: string[];\r\n}\r\n\r\nexport interface IUploadConfig {\r\n url: string;\r\n layerName: string;\r\n relatedTable: 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\n\r\nexport const proxyUrl = process.env.NODE_ENV === \"development\" ? \"https://lvmkartes.lvm.lv/timberflowform/beta/\" : \"\";\r\nexport const all = \"Izvēlēties vērtību\";\r\nexport const defaultOption = { name: all, code: undefined };\r\n\r\nexport const config: IConfig = {\r\n default: {\r\n center: [530000, 310000],\r\n extentSize: [530000, 310000],\r\n viewExtent: [160000, 40000, 900000, 570000],\r\n zoom: 4.5,\r\n minZoom: 3.5,\r\n maxZoom: 20,\r\n projection: \"EPSG:3059\",\r\n zoomToLevel: 13,\r\n highLightLayerId: \"highlightLayer\",\r\n drawingLayerId: \"drawingLayer\",\r\n tileGrid: {\r\n origin: [-5120900, 3998100],\r\n tileSize: [512, 512],\r\n resolutions: [\r\n 1058.3354500042335,\r\n 529.1677250021168,\r\n 264.5838625010584,\r\n 132.2919312505292,\r\n 52.91677250021167,\r\n 26.458386250105836,\r\n 13.229193125052918,\r\n 10.583354500042335,\r\n 7.9375158750317505,\r\n 5.291677250021167,\r\n 3.9687579375158752,\r\n 2.6458386250105836,\r\n 1.3229193125052918,\r\n 0.5291677250021167\r\n ]\r\n }\r\n },\r\n basemaps: [\r\n {\r\n id: Basemaps.Mamma,\r\n title: \"LVM Fona karte\",\r\n type: \"TileXYZ\",\r\n visible: true,\r\n image: \"mamma.png\",\r\n source: {\r\n url: proxyUrl + \"proxy/D341478CE74F4F02B68607991448D499/CloudMap_mammadaba/MapServer\",\r\n maxZoom: 14,\r\n projection: \"EPSG:3059\",\r\n crossOrigin: \"anonymous\"\r\n }\r\n },\r\n {\r\n id: Basemaps.Orto,\r\n title: \"Ortofoto karte\",\r\n type: \"TileWMS\",\r\n visible: false,\r\n image: \"orto2.png\",\r\n source: {\r\n url: \"https://lvmgeoserver.lvm.lv/geoserver/ows\",\r\n params: {\r\n LAYERS: \"public:Orto_LKS\",\r\n FORMAT: \"image/vnd.jpeg-png8\",\r\n transparent: false\r\n },\r\n projection: \"EPSG:3059\",\r\n serverType: \"geoserver\",\r\n crossOrigin: \"anonymous\"\r\n }\r\n },\r\n {\r\n id: Basemaps.Topo10,\r\n title: \"Topogrāfiskā karte 1:10 000\",\r\n type: \"TileWMS\",\r\n visible: false,\r\n image: \"topo10.png\",\r\n source: {\r\n url: \"https://lvmgeoserver.lvm.lv/geoserver/ows\",\r\n params: {\r\n LAYERS: \"public:Topo10\",\r\n FORMAT: \"image/vnd.jpeg-png8\",\r\n transparent: false\r\n },\r\n projection: \"EPSG:3059\",\r\n serverType: \"geoserver\",\r\n crossOrigin: \"anonymous\"\r\n }\r\n }\r\n ],\r\n layers: [\r\n {\r\n id: \"DAP\",\r\n title: \"Dabas aizsardzības pārvaldes dati\",\r\n type: \"ImageArcGISRest\",\r\n copyright: \"DAP\",\r\n url: proxyUrl + \"proxy/D341478CE74F4F02B68607991448D499/DAP/vDAP_public/MapServer\",\r\n crossOrigin: \"anonymous\",\r\n maxResolution: 7.9375158750317505,\r\n visible: true,\r\n showInToc: true,\r\n zIndex: 10\r\n },\r\n {\r\n id: \"cadaster\",\r\n title: \"Kadastra karte\",\r\n type: \"ImageArcGISRest\",\r\n copyright: \"Valsts Zemes dienests\",\r\n url: proxyUrl + \"proxy/7cb29dcbb61442b7a22c289b22d671b8/MapServer\",\r\n crossOrigin: \"anonymous\",\r\n maxResolution: 20,\r\n params: { LAYERS: \"show:2,4,17,20\" },\r\n visible: true,\r\n showInToc: true,\r\n zIndex: 11\r\n },\r\n {\r\n id: \"roadsLVM\",\r\n title: \"LVM autoceļi\",\r\n type: \"Vector\",\r\n copyright: \"LVM\",\r\n url: proxyUrl + \"proxy/db08b72d75954eeab9e3d3b19b03163d/NIsTimberFlow/FeatureServer/0\",\r\n crossOrigin: \"anonymous\",\r\n maxResolution: 14.7, // 1000m\r\n visible: true,\r\n showInToc: true,\r\n zIndex: 12\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 forms: {\r\n textFilter: {\r\n field: \"TEXT-FILTER\",\r\n title: \"Teksta meklēšana\"\r\n },\r\n individualApplicantForm: {\r\n fields: [\r\n {\r\n field: \"APPLICANTNAME\",\r\n title: \"Vārds, uzvārds\",\r\n type: Input.Text,\r\n required: true,\r\n maxlength: 100,\r\n validationFn: (value): boolean => value.length <= 100,\r\n validationErrorMessage: \"Atļautas 100 zīmes\"\r\n },\r\n {\r\n field: \"APPLICANTCODE\",\r\n title: \"Personas kods\",\r\n type: Input.Text,\r\n required: true,\r\n validationFn: (value): boolean => {\r\n //@ts-ignore\r\n const result = window.PersonCodeValidator(value.replace(/[^0-9]/g, \"\"));\r\n return result.isSuccess;\r\n },\r\n validationErrorMessage: \"Kļūdains personas kods\"\r\n },\r\n {\r\n field: \"APPLICANTADDRESS\",\r\n title: \"Adrese\",\r\n type: Input.Text,\r\n autocomplete: \"street-address\",\r\n required: true,\r\n maxlength: 100,\r\n validationFn: (value): boolean => value.length <= 100,\r\n validationErrorMessage: \"Atļautas 100 zīmes\"\r\n },\r\n {\r\n field: \"APPLICANTPHONE\",\r\n title: \"Telefons\",\r\n type: Input.Phone,\r\n autocomplete: \"tel\",\r\n required: true,\r\n validationFn: (value): boolean => (value.match(/^\\+?\\d{8,11}$/) ? true : false), // only digits, 8-11 symbols\r\n validationErrorMessage: \"Kļūdains telefona numurs\"\r\n },\r\n {\r\n field: \"APPLICANTEMAIL\",\r\n title: \"E-pasts\",\r\n type: Input.Email,\r\n autocomplete: \"email\",\r\n required: true,\r\n validationFn: (value): boolean =>\r\n value.match(/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,6})+$/) ? true : false,\r\n validationErrorMessage: \"Kļūdains epasts\"\r\n },\r\n { field: \"OTHERCONTACTPERSON\", title: \"Cita kontaktpersona\", type: Input.Checkbox },\r\n {\r\n field: \"CONTACTPERSON\",\r\n title: \"Kontaktpersona\",\r\n type: Input.Text,\r\n required: true,\r\n visibilityDeterminantField: \"OTHERCONTACTPERSON\",\r\n visibilityDeterminantFieldVisibleValue: true,\r\n maxlength: 100,\r\n validationFn: (value): boolean => value.length <= 100,\r\n validationErrorMessage: \"Atļautas 100 zīmes\"\r\n },\r\n {\r\n field: \"CONTACTPERSONPHONE\",\r\n title: \"Kontaktpersonas tālrunis\",\r\n type: Input.Phone,\r\n autocomplete: \"tel\",\r\n required: true,\r\n visibilityDeterminantField: \"OTHERCONTACTPERSON\",\r\n visibilityDeterminantFieldVisibleValue: true\r\n }\r\n ]\r\n },\r\n companyApplicantForm: {\r\n fields: [\r\n {\r\n field: \"APPLICANTNAME\",\r\n title: \"Uzņēmuma nosaukums\",\r\n type: Input.Text,\r\n autocomplete: \"organization\",\r\n required: true,\r\n maxlength: 100,\r\n validationFn: (value): boolean => value.length <= 100,\r\n validationErrorMessage: \"Atļautas 100 zīmes\"\r\n },\r\n {\r\n field: \"APPLICANTCODE\",\r\n title: \"Reģistrācijas numurs\",\r\n type: Input.Text,\r\n required: true,\r\n validationFn: (value): boolean => value.length === 9 || value.length === 11,\r\n validationErrorMessage: \"Kļūdains reģistrācijas numurs\"\r\n },\r\n {\r\n field: \"APPLICANTADDRESS\",\r\n title: \"Adrese\",\r\n type: Input.Text,\r\n required: true,\r\n maxlength: 100,\r\n autocomplete: \"street-address\",\r\n validationFn: (value): boolean => value.length <= 100,\r\n validationErrorMessage: \"Atļautas 100 zīmes\"\r\n },\r\n {\r\n field: \"APPLICANTPHONE\",\r\n title: \"Telefons\",\r\n type: Input.Phone,\r\n autocomplete: \"tel\",\r\n required: true,\r\n validationFn: (value): boolean => (value.match(/^\\+?\\d{8,11}$/) ? true : false), // only digits, 8-11 symbols\r\n validationErrorMessage: \"Kļūdains telefona numurs\"\r\n },\r\n {\r\n field: \"APPLICANTEMAIL\",\r\n title: \"E-pasts\",\r\n type: Input.Email,\r\n autocomplete: \"email\",\r\n required: true,\r\n validationFn: (value: string, APPLICANTCODE: string): boolean => {\r\n const isEmail = value.match(/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/) ? true : false;\r\n const [name, number] = value.split(\"@\");\r\n const isEadress = APPLICANTCODE\r\n ? number === APPLICANTCODE && (number.length === 9 || number.length === 11)\r\n : number.length === 9 || number.length === 11;\r\n return isEmail || isEadress;\r\n },\r\n validationErrorMessage: \"Kļūdains epasts\",\r\n validationComparator: \"APPLICANTCODE\"\r\n },\r\n {\r\n field: \"CONTACTPERSON\",\r\n title: \"Kontaktpersona\",\r\n type: Input.Text,\r\n required: true,\r\n maxlength: 100,\r\n validationFn: (value): boolean => value.length <= 100,\r\n validationErrorMessage: \"Atļautas 100 zīmes\"\r\n },\r\n {\r\n field: \"CONTACTPERSONPHONE\",\r\n title: \"Kontaktpersonas tālrunis\",\r\n type: Input.Phone,\r\n autocomplete: \"tel\",\r\n required: true,\r\n validationFn: (value): boolean => (value.match(/^\\+?\\d{8,11}$/) ? true : false), // only digits, 8-11 symbols\r\n validationErrorMessage: \"Kļūdains telefona numurs\"\r\n }\r\n ]\r\n },\r\n termForm: {\r\n fields: [\r\n {\r\n field: \"VOLUME\",\r\n title: \"Kokmateriālu apjoms, m3\",\r\n type: Input.Number,\r\n required: true,\r\n maxlength: 8,\r\n validationFn: (value): boolean => (value > 0 && value.match(/^[\\d\\.\\,]{1,8}$/) ? true : false),\r\n validationErrorMessage: \"Nekorekts apjoms\"\r\n },\r\n { field: \"DATEFROM\", title: \"Datums no\", type: Input.Date, required: true, maxDateField: \"DATETO\" },\r\n { field: \"DATETO\", title: \"Datums līdz\", type: Input.Date, required: true, minDateField: \"DATEFROM\" },\r\n {\r\n field: \"DESCRIPTION\",\r\n title: \"Piezīmes\",\r\n type: Input.TextArea,\r\n maxlength: 500,\r\n validationFn: (value): boolean => value.length <= 500,\r\n validationErrorMessage: \"Atļautas 500 zīmes\"\r\n }\r\n ]\r\n }\r\n },\r\n search: [\r\n // Pagasti\r\n { url: proxyUrl + \"proxy/b3bab3192ed5477d8854f4eea8601f7f\", layerId: \"0\", field: \"MUNICIPALITYNAME\" },\r\n // Novadi\r\n { url: proxyUrl + \"proxy/b3bab3192ed5477d8854f4eea8601f7f\", layerId: \"1\", field: \"REGIONNAME\" },\r\n // Autoceļi\r\n {\r\n url: proxyUrl + \"proxy/db08b72d75954eeab9e3d3b19b03163d/NIsTimberFlow/FeatureServer\",\r\n layerId: \"0\",\r\n field: \"ROADNAME\"\r\n },\r\n // Kadastra apzīmējums\r\n {\r\n url: proxyUrl + \"proxy/db08b72d75954eeab9e3d3b19b03163d/NIsTimberFlow/FeatureServer\",\r\n layerId: \"1\",\r\n field: \"CODE\"\r\n }\r\n ],\r\n identify: {\r\n url: proxyUrl + \"proxy/db08b72d75954eeab9e3d3b19b03163d/NIsTimberFlow/MapServer\",\r\n layers: [\"1\"]\r\n },\r\n reCaptchaSiteKey: \"6LeaTM0iAAAAAKduC9nZtXMkNnTUc77q_c_Tlx6K\",\r\n upload: {\r\n url: proxyUrl + \"proxy/fp_save_65b3672bc95d445b839674948b5ad29f/api/Save\",\r\n layerName: \"PUBSDE.LVMFormTimberFlowFiles\",\r\n relatedTable: \"PUBSDE.LVMFormTimberFlowFiles\"\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:\r\n \"AS “Latvijas valsts meži” ir saņemts Jūsu iesniegums koksnes transportēšanas saskaņošanai. \\n Ar cirsmas izstrādi saistīto darbību (sortimentu pievešana, nokraušana, transportēšana u.c.) LVM meža zemē un/vai meža ceļu izmantošanu drīkst uzsākt saņemot rakstisku LVM saskaņojumu uz elektroniskā pasta adresi vai pēc Vienošanās noslēgšanas.\",\r\n url: proxyUrl + \"proxy/email_6e1fcf2dbd3a482f9ca10cd08cc258af/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 Basemaps {\r\n Mamma = \"mammaBasemap\",\r\n Orto = \"ortoBasemap\",\r\n Topo10 = \"topo10Basemap\"\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 PointYard = \"PointYard\",\r\n PolylineLvmRoad = \"PolylineLvmRoad\",\r\n PolylineRoad = \"PolylineRoad\",\r\n PolygonProperty = \"PolygonProperty\"\r\n}\r\n\r\nexport enum PageId {\r\n ApplicantForm = \"ApplicantForm\",\r\n TermForm = \"TermForm\",\r\n DrawingForm = \"DrawingForm\",\r\n ConditionsForm = \"ConditionsForm\",\r\n SummaryForm = \"SummaryForm\",\r\n Submit = \"Submit\"\r\n}\r\n\r\nexport enum Result {\r\n Success = \"Success\",\r\n Error = \"Error\"\r\n}\r\n\r\nexport enum UploadState {\r\n UploadGeometries = \"UploadGeometries\",\r\n SubmitForm = \"SubmitForm\",\r\n CreatePdf = \"CreatePdf\",\r\n UploadPdf = \"UploadPdf\",\r\n SendEmail = \"SendEmail\"\r\n}\r\n\r\nexport enum PrintType {\r\n Path = 1,\r\n File = 2\r\n}\r\n\r\nexport enum OlDrawTypes {\r\n LineString = \"LineString\",\r\n Point = \"Point\",\r\n Polygon = \"Polygon\"\r\n}\r\n","import axios, { AxiosResponse } from \"axios\";\r\nimport { Feature } from \"ol\";\r\nimport { EsriJSON } from \"ol/format\";\r\nimport { ISummaryParams } from \"../Registration/SummarySection\";\r\nimport { config, defaultOption, proxyUrl } from \"./config\";\r\nimport { AttachmentType, PrintType } from \"./enums\";\r\nimport { getMultiPolygonGeometry } from \"./utils\";\r\n\r\nexport interface IEsriFieldInfo {\r\n alias: string;\r\n domain: IEsriDomain;\r\n editable: boolean;\r\n name: string;\r\n nullable: boolean;\r\n type: string;\r\n}\r\n\r\nexport interface IEsriDomain {\r\n type: string;\r\n name: string;\r\n description: string;\r\n codedValues: IEsriCodedValue[];\r\n mergePolicy: string;\r\n}\r\n\r\nexport interface IEsriCodedValue {\r\n code: string | number;\r\n name: string;\r\n}\r\n\r\nexport interface IObjectIDs {\r\n objectId: number;\r\n globalId: string;\r\n}\r\n\r\nexport interface IAttachmentPath {\r\n type: AttachmentType;\r\n url: string;\r\n}\r\nexport interface IAttachmentFile {\r\n type: AttachmentType;\r\n endpoint: string;\r\n resourceId: string;\r\n}\r\n\r\nexport interface ISearchParams {\r\n f: string;\r\n where: string;\r\n outFields: string;\r\n}\r\n\r\nconst esrijsonFormat = new EsriJSON();\r\n\r\nconst fieldInfoCache: Record = {};\r\n\r\nexport const fetchFieldInfo = async (): Promise => {\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 return axios\r\n .get(proxyUrl + \"proxy/db08b72d75954eeab9e3d3b19b03163d/NIeTimberFlow/MapServer/3\", { 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 info = response.data.fields;\r\n // addDefaultCodedValuesOption(info);\r\n fieldInfoCache[0] = info;\r\n return info;\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\n// const addDefaultCodedValuesOption = (info: IEsriFieldInfo[]) => {\r\n// config.forms.eventForm.fields.map((inputField) => {\r\n// const currentFieldInfo = info.find((item) => item.name === inputField.field);\r\n// if (currentFieldInfo && currentFieldInfo.domain && currentFieldInfo.domain.codedValues) {\r\n// currentFieldInfo.domain.codedValues.unshift(defaultOption);\r\n// }\r\n// });\r\n// };\r\n\r\nexport const updateFeatures = async (features: Feature[], layerId?: string) => {\r\n const recaptchaToken = await getCaptchaToken();\r\n if (!recaptchaToken) {\r\n return undefined;\r\n }\r\n\r\n const queryString = new URLSearchParams();\r\n queryString.append(\"f\", \"json\");\r\n queryString.append(\"g-recaptcha-response\", recaptchaToken);\r\n queryString.append(\r\n \"features\",\r\n \"[\" + features.map((feature) => esrijsonFormat.writeFeature(feature)).toString() + \"]\"\r\n );\r\n\r\n return axios\r\n .post(\r\n proxyUrl + \"proxy/recaptcha-8aa8cde7a8a3486e887ae5303a285950/\" + (layerId || 0) + \"/updateFeatures\",\r\n queryString\r\n )\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.updateResults;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return [];\r\n });\r\n};\r\n\r\nexport const requestObjectIds = async (features: Feature[], layerId?: string): Promise => {\r\n const recaptchaToken = await getCaptchaToken();\r\n if (!recaptchaToken) {\r\n return undefined;\r\n }\r\n\r\n const queryString = new URLSearchParams();\r\n queryString.append(\"f\", \"json\");\r\n queryString.append(\"g-recaptcha-response\", recaptchaToken);\r\n queryString.append(\r\n \"features\",\r\n \"[\" + features.map((feature) => esrijsonFormat.writeFeature(feature)).toString() + \"]\"\r\n );\r\n\r\n return axios\r\n .post(\r\n proxyUrl + \"proxy/recaptcha-8aa8cde7a8a3486e887ae5303a285950/\" + (layerId || 0) + \"/addFeatures\",\r\n queryString\r\n )\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 ids: IObjectIDs[] = response.data.addResults.map((res) => ({\r\n objectId: res.objectId,\r\n globalId: res.globalId\r\n }));\r\n return ids;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n};\r\n\r\nexport const uploadFile = async (file: File, id: string): Promise => {\r\n const recaptchaToken = await getCaptchaToken();\r\n if (!recaptchaToken) {\r\n return undefined;\r\n }\r\n // this is temporary solution to set mime-type in client side, for .kml, .kmz files\r\n // API team is working on changes to avoid this\r\n let newFile = file;\r\n if (!file.type) {\r\n const extension = file.name.split(\".\").pop().toLowerCase();\r\n const mimeType =\r\n extension === \"kmz\"\r\n ? \"application/vnd.google-earth.kmz\"\r\n : extension === \"kml\"\r\n ? \"application/vnd.google-earth.kml+xml\"\r\n : \"\";\r\n const blob = new Blob([file], { type: mimeType });\r\n newFile = new File([blob], file.name, { type: mimeType });\r\n }\r\n /////////////////////////////////////////////////////////////////////////////////\r\n\r\n const formData = new FormData();\r\n formData.append(\"file\", newFile);\r\n formData.append(\"RelatedObjectId\", id);\r\n formData.append(\"FieldName\", \"FILEID\");\r\n formData.append(\"LayerName\", config.upload.layerName);\r\n formData.append(\"RelatedTable\", config.upload.relatedTable);\r\n formData.append(\"g-recaptcha-response\", recaptchaToken);\r\n\r\n return axios\r\n .post(config.upload.url, formData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n })\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;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n};\r\n\r\nexport const printPdf = async (data: ISummaryParams, printType: PrintType): Promise => {\r\n const recaptchaToken = await getCaptchaToken();\r\n if (!recaptchaToken) {\r\n return undefined;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append(\"g-recaptcha-response\", recaptchaToken);\r\n formData.append(\"data\", JSON.stringify(data));\r\n printType === PrintType.Path && formData.append(\"f\", \"json\");\r\n\r\n return axios\r\n .post(\r\n config.print.url + config.print.endpoint,\r\n formData,\r\n printType === PrintType.File && {\r\n responseType: \"blob\",\r\n headers: {\r\n Accept: \"application/pdf\"\r\n }\r\n }\r\n )\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return { status: 0 } as AxiosResponse;\r\n });\r\n};\r\n\r\nexport const sendEmail = async (\r\n to: string,\r\n attachments: IAttachmentPath[] | IAttachmentFile[]\r\n): Promise => {\r\n const recaptchaToken = await getCaptchaToken();\r\n if (!recaptchaToken) {\r\n return undefined;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append(\"To\", to);\r\n formData.append(\"Subject\", config.email.subject);\r\n formData.append(\"Body\", config.email.body);\r\n formData.append(\"g-recaptcha-response\", recaptchaToken);\r\n\r\n if (attachments && attachments.length) {\r\n attachments.map((a, i) => {\r\n a.type && formData.append(\"ExternalAttachments[\" + i + \"].type\", a.type);\r\n a.url && formData.append(\"ExternalAttachments[\" + i + \"].url\", a.url);\r\n a.endpoint && formData.append(\"ExternalAttachments[\" + i + \"].endpoint\", a.endpoint);\r\n a.resourceId && formData.append(\"ExternalAttachments[\" + i + \"].resourceId\", a.resourceId);\r\n });\r\n }\r\n\r\n return axios\r\n .post(config.email.url, formData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return { status: 0 } as AxiosResponse;\r\n });\r\n};\r\n\r\nexport const executeQuery = async (params: ISearchParams, url: string, layerId: string): Promise => {\r\n return axios\r\n .get(url + \"/\" + layerId + \"/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 return [];\r\n });\r\n};\r\n\r\nconst getCaptchaToken = (): Promise => {\r\n return new Promise((resolve) => {\r\n //@ts-ignore\r\n window.grecaptcha.ready(() => {\r\n //@ts-ignore\r\n window.grecaptcha\r\n .execute(config.reCaptchaSiteKey, { action: \"submit\" })\r\n .then((token) => resolve(token))\r\n .catch(() => resolve(null));\r\n });\r\n });\r\n};\r\n\r\nexport const getLVMForestry = async (features: Feature[]): Promise => {\r\n const jsonData = {\r\n geometry: getMultiPolygonGeometry(features),\r\n GeometryType: \"esriGeometryPolygon\",\r\n fields: [\r\n \"LVMFORESTRYCODE\",\r\n \"LVMFORESTRYNAME\",\r\n \"LVMDISTRICTCODE\",\r\n \"LVMDISTRICTNAME\",\r\n \"MANAGERNAME\",\r\n \"MANAGERPHONE\",\r\n \"MANAGEREMAIL\"\r\n ]\r\n };\r\n\r\n return axios\r\n .post(config.geometryService.url + config.geometryService.endpoint, jsonData, {\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\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;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n};\r\n\r\nexport const getIntersectedForestryCount = async (features: Feature[]): Promise => {\r\n const queryString = new URLSearchParams();\r\n queryString.append(\"f\", \"json\");\r\n queryString.append(\"outFields\", \"*\");\r\n queryString.append(\"geometryType\", \"esriGeometryPolygon\");\r\n queryString.append(\"spatialRel\", \"esriSpatialRelIntersects\");\r\n queryString.append(\"returnCountOnly\", \"true\");\r\n queryString.append(\"geometry\", JSON.stringify(getMultiPolygonGeometry(features)));\r\n\r\n return axios\r\n .post(proxyUrl + \"proxy/13d020edd12a4c44894a782aea9527c2/3/query\", queryString)\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;\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n};\r\n\r\nexport const loadSourceFeatures = (url: string, ext: number[], source): void => {\r\n const params = {\r\n f: \"json\",\r\n returnGeometry: true,\r\n outFields: \"*\",\r\n outSR: \"3059\",\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 features.length && source.addFeatures(features);\r\n })\r\n .catch((err) => console.error(err));\r\n};\r\n\r\nexport const identify = async (url: string, params): 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 return esrijsonFormat.readFeatures({ features: response.data.results });\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n return [];\r\n });\r\n};\r\n","import { config, IBasemapTileWMS, IBasemapTileXYZ } from \"./config\";\r\nimport { Feature, View, Map } from \"ol\";\r\nimport { Vector as VectorSource, TileWMS, XYZ } from \"ol/source\";\r\nimport { Tile as TileLayer, Vector as VectorLayer } from \"ol/layer\";\r\nimport TileGrid from \"ol/tilegrid/TileGrid\";\r\nimport { defaults as defaultControls } from \"ol/control\";\r\nimport { Basemaps } from \"./enums\";\r\nimport { getDrawingSymbol } from \"./symbols\";\r\nimport \"./snapshots.scss\";\r\n\r\nconst shadowMapId = \"shadow-map\";\r\n\r\nexport const generateSnapshots = (\r\n features: Feature[],\r\n basemap: Basemaps,\r\n setSnapshot: CallableFunction\r\n): Promise => {\r\n const source = new VectorSource({ features });\r\n const shadowMap = createShadowMap(basemap, source);\r\n\r\n return new Promise((resolve) => {\r\n shadowMap.once(\"rendercomplete\", () => {\r\n shadowMap.getView().fit(source.getExtent(), {\r\n padding: [50, 50, 50, 50],\r\n callback: () =>\r\n shadowMap.once(\"rendercomplete\", () => {\r\n const snapshot = getSnapshot(shadowMap);\r\n setSnapshot(snapshot);\r\n document.getElementById(shadowMapId).remove();\r\n resolve(snapshot);\r\n })\r\n });\r\n });\r\n });\r\n};\r\n\r\nconst createShadowMap = (basemapId: Basemaps, source: VectorSource) => {\r\n const target = document.createElement(\"div\");\r\n target.id = shadowMapId;\r\n document.body.append(target);\r\n\r\n return new Map({\r\n layers: [createBasemapLayer(basemapId), createDrawingLayer(source)],\r\n target,\r\n view: new View({\r\n projection: config.default.projection,\r\n center: config.default.center,\r\n zoom: 3.55\r\n }),\r\n controls: defaultControls({ zoom: false, rotate: false })\r\n });\r\n};\r\n\r\nconst createBasemapLayer = (basemapId: Basemaps) => {\r\n const basemapConfig = config.basemaps.find((b) => b.id === basemapId);\r\n if (basemapId === Basemaps.Orto || basemapId === Basemaps.Topo10) {\r\n const basemap = basemapConfig as IBasemapTileWMS;\r\n return new TileLayer({\r\n source: new TileWMS({\r\n url: basemap.source.url,\r\n params: basemap.source.params,\r\n projection: basemap.source.projection,\r\n crossOrigin: basemap.source.crossOrigin\r\n })\r\n });\r\n }\r\n\r\n const basemap = basemapConfig as IBasemapTileXYZ;\r\n return new TileLayer({\r\n source: new XYZ({\r\n url: basemap.source.url + \"/tile/{z}/{y}/{x}\",\r\n maxZoom: basemap.source.maxZoom,\r\n projection: basemap.source.projection,\r\n tileGrid: new TileGrid(config.default.tileGrid),\r\n crossOrigin: basemap.source.crossOrigin\r\n })\r\n });\r\n};\r\n\r\nconst createDrawingLayer = (source: VectorSource) =>\r\n new VectorLayer({\r\n source,\r\n style: (drawFeature) => getDrawingSymbol(drawFeature.get(\"DRAWTYPE\"), drawFeature.get(\"MASTERNAME\"))\r\n });\r\n\r\nconst getSnapshot = (shadowMap: Map) => {\r\n const mapCanvas = document.createElement(\"canvas\");\r\n const size = shadowMap.getSize();\r\n mapCanvas.width = size[0];\r\n mapCanvas.height = size[1];\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, 0, 0);\r\n }\r\n });\r\n\r\n return mapCanvas.toDataURL();\r\n};\r\n","import { Feature } from \"ol\";\r\nimport { Circle as CircleStyle, Fill, Stroke, Style, Text } from \"ol/style\";\r\nimport { LineString, MultiPoint } from \"ol/geom\";\r\nimport { DrawType } from \"./enums\";\r\n\r\nconst white = [255, 255, 255, 1];\r\nconst blue = [0, 153, 255, 1];\r\nconst blueFill = [0, 153, 255, 0.3];\r\nconst orange = [250, 140, 35, 1];\r\nconst orangeFill = [250, 140, 35, 0.15];\r\nconst red = [255, 0, 0, 1];\r\nconst primaryDark = \"#4c4c4c\";\r\nconst yellow = [255, 255, 0, 0.8];\r\nconst brightYellow = [255, 255, 0, 0.9];\r\nconst yellowFill = [255, 255, 0, 0.15];\r\nconst LVMRoadColor = [168, 112, 0, 255];\r\n\r\nconst vertice = new CircleStyle({\r\n radius: 6,\r\n fill: new Fill({\r\n color: blue\r\n }),\r\n stroke: new Stroke({\r\n color: white,\r\n width: 1.5\r\n })\r\n});\r\n\r\nconst strokeStyle = new Stroke({\r\n color: red,\r\n width: 4\r\n});\r\n\r\nconst selectStrokeStyle = new Stroke({\r\n color: blue,\r\n width: 3\r\n});\r\n\r\nconst highLightStrokeStyle = new Stroke({\r\n color: yellow,\r\n width: 3\r\n});\r\n\r\nexport const getDrawingSymbol = (\r\n type: DrawType,\r\n roadName: string,\r\n isSelect?: boolean,\r\n isModify?: boolean\r\n): Style | Style[] => {\r\n const isNaturalRoad = roadName === \"Dabiska brauktuve\";\r\n if (type === DrawType.PolygonProperty) {\r\n return isSelect\r\n ? new Style({\r\n fill: new Fill({\r\n color: blueFill\r\n }),\r\n stroke: selectStrokeStyle\r\n })\r\n : new Style({\r\n fill: new Fill({\r\n color: orangeFill\r\n }),\r\n stroke: strokeStyle\r\n });\r\n } else if (type === DrawType.PolylineLvmRoad) {\r\n return isSelect\r\n ? new Style({\r\n stroke: new Stroke({ color: blue, width: 4, lineDash: isNaturalRoad && [4, 4] })\r\n })\r\n : new Style({\r\n stroke: new Stroke({ color: red, width: 4, lineDash: isNaturalRoad && [4, 4] })\r\n });\r\n } else if (type === DrawType.PolylineRoad) {\r\n if (isModify) {\r\n return new Style({\r\n image: vertice\r\n });\r\n }\r\n if (isSelect) {\r\n return [\r\n new Style({\r\n stroke: selectStrokeStyle\r\n }),\r\n new Style({\r\n image: vertice,\r\n geometry: (feature) =>\r\n new MultiPoint(((feature as Feature).getGeometry() as LineString).getCoordinates())\r\n })\r\n ];\r\n }\r\n return new Style({\r\n stroke: strokeStyle\r\n });\r\n } else {\r\n return new Style({\r\n // image: new CircleStyle({\r\n // fill: new Fill({\r\n // color: white\r\n // }),\r\n // stroke: new Stroke({\r\n // color: isModify ? blue : isSelect ? blue : orange,\r\n // width: isModify ? 2 : 3\r\n // }),\r\n // radius: 9\r\n // })\r\n text: new Text({\r\n font: 'normal normal 400 18px \"icomoon\"',\r\n fill: new Fill({\r\n color: white\r\n }),\r\n text: String.fromCodePoint(0xe91a),\r\n stroke: new Stroke({\r\n color: isModify ? blue : isSelect ? blue : red,\r\n width: isModify ? 3 : 4\r\n })\r\n })\r\n });\r\n }\r\n};\r\n\r\nexport const getHighLightSymbol = (feature: Feature): Style => {\r\n const type = feature.getGeometry().getType();\r\n const isNaturalRoad = feature.get(\"ROADSUBTYPE\") === 1;\r\n\r\n if (type === \"Polygon\") {\r\n return new Style({\r\n fill: new Fill({\r\n color: yellowFill\r\n }),\r\n stroke: highLightStrokeStyle\r\n });\r\n } else if (type === \"LineString\") {\r\n return new Style({\r\n stroke: new Stroke({\r\n color: yellow,\r\n 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: white\r\n }),\r\n stroke: new Stroke({\r\n color: yellow,\r\n width: 2\r\n }),\r\n radius: 12\r\n })\r\n });\r\n }\r\n};\r\n\r\nexport const LVMRoadStyle = (feature: Feature): Style => {\r\n const isClicked = feature.get(\"CLICKED\") || feature.get(\"HOVERED\");\r\n const isNaturalRoad = feature.get(\"ROADSUBTYPE\") === 1;\r\n return new Style({\r\n stroke: new Stroke({\r\n color: isClicked ? brightYellow : LVMRoadColor,\r\n width: isClicked ? 5 : isNaturalRoad ? 2 : 3,\r\n lineDash: isNaturalRoad && [4, 4]\r\n }),\r\n text: new Text({\r\n font: isClicked ? \"bold 15px sans-serif\" : \"bold 14px sans-serif\",\r\n placement: \"line\",\r\n fill: new Fill({\r\n color: LVMRoadColor\r\n }),\r\n stroke: new Stroke({\r\n color: isClicked ? yellow : white,\r\n width: 2\r\n }),\r\n text: feature.get(\"ROADNAME\")\r\n })\r\n });\r\n};\r\n","import { MutableRefObject, useEffect, useRef, useState } from \"react\";\r\nimport { extend, Extent, buffer, createEmpty, getCenter } from \"ol/extent\";\r\nimport { Vector as VectorSource, TileWMS, XYZ, ImageArcGISRest } from \"ol/source\";\r\nimport TileGrid from \"ol/tilegrid/TileGrid\";\r\nimport { Tile as TileLayer, Vector as VectorLayer, Image as ImageLayer } from \"ol/layer\";\r\nimport { Feature, View, Map } from \"ol\";\r\nimport { Point, SimpleGeometry, Geometry } from \"ol/geom\";\r\nimport { defaults as defaultControls } from \"ol/control\";\r\nimport { getDrawingSymbol, getHighLightSymbol, LVMRoadStyle } from \"./symbols\";\r\nimport { ITimberFlowFormMapProps } from \"../Providers/mapProvider\";\r\nimport { LocationButton } from \"./Buttons/GeoLocation\";\r\nimport { HomeButton } from \"./Buttons/Home\";\r\nimport { AttributionButton } from \"./Buttons/Attribution\";\r\nimport { config, IBasemapTileWMS, IBasemapTileXYZ } from \"./config\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { DrawType } from \"./enums\";\r\nimport { LayersButton } from \"./Buttons/Layers\";\r\nimport { ScaleControl } from \"./Buttons/Scale\";\r\nimport { DrawingButton } from \"./Buttons/Drawing\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { getPointResolution } from \"ol/proj\";\r\nimport { identify, loadSourceFeatures } from \"./rest\";\r\nimport { tile as tileStrategy } from \"ol/loadingstrategy\";\r\nimport { createXYZ } from \"ol/tilegrid\";\r\n\r\nconst DEFAULT_DPI = 25.4 / 0.28;\r\nconst inchesPerMeter = 1000 / 25.4;\r\n\r\nconst tileGrid = new TileGrid(config.default.tileGrid);\r\n\r\nlet _map: MutableRefObject;\r\nlet sourceRef: MutableRefObject;\r\nlet polygonSourceRef: MutableRefObject;\r\nlet highLightSourceRef: MutableRefObject;\r\nlet hoveredRef: MutableRefObject;\r\nlet drawTypeRef: MutableRefObject;\r\n\r\nexport const useMap = (target: MutableRefObject, props: ITimberFlowFormMapProps): Map => {\r\n _map = useRef();\r\n sourceRef = useRef(new VectorSource());\r\n polygonSourceRef = useRef(new VectorSource());\r\n highLightSourceRef = useRef(new VectorSource());\r\n hoveredRef = useRef();\r\n\r\n const {\r\n isMobile,\r\n hasMap,\r\n basemap,\r\n zoomToSourceFeatures,\r\n locateFeature,\r\n setZoomToSourceFeatures,\r\n toggleLayersMenuVisible,\r\n getStoredSettings,\r\n setClickedFeatures,\r\n drawType,\r\n setIdentifiedFeatures\r\n } = useAppContext();\r\n\r\n const { drawnFeatures, setDrawingMenuVisible } = useRegistrationContext();\r\n\r\n drawTypeRef = useRef(drawType);\r\n\r\n useEffect(() => {\r\n if (target.current && hasMap) {\r\n const baseLayers = config.basemaps.map((b) => {\r\n if (b.type === \"TileXYZ\") {\r\n const basemap = b as IBasemapTileXYZ;\r\n return new TileLayer({\r\n source: new XYZ({\r\n url: basemap.source.url + \"/tile/{z}/{y}/{x}\",\r\n maxZoom: basemap.source.maxZoom,\r\n projection: basemap.source.projection,\r\n tileGrid,\r\n crossOrigin: basemap.source.crossOrigin\r\n }),\r\n visible: getStoredSettings().basemap\r\n ? basemap.id === getStoredSettings().basemap\r\n : basemap.visible,\r\n properties: { id: basemap.id },\r\n zIndex: 0\r\n });\r\n }\r\n if (b.type === \"TileWMS\") {\r\n const basemap = b as IBasemapTileWMS;\r\n return new TileLayer({\r\n source: new TileWMS({\r\n url: basemap.source.url,\r\n params: basemap.source.params,\r\n projection: basemap.source.projection,\r\n crossOrigin: basemap.source.crossOrigin\r\n }),\r\n visible: basemap.id === getStoredSettings().basemap,\r\n properties: { id: basemap.id },\r\n zIndex: 0\r\n });\r\n }\r\n });\r\n\r\n const dataLayers = config.layers\r\n .filter((layer) => getStoredSettings().layers.includes(layer.id))\r\n .map((l) => {\r\n if (l.type === \"TileXYZ\") {\r\n return new TileLayer({\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,\r\n tileGrid\r\n }),\r\n minResolution: l.minResolution,\r\n maxResolution: l.maxResolution,\r\n extent: l.extent,\r\n properties: { id: l.id },\r\n zIndex: l.zIndex\r\n });\r\n }\r\n if (l.type === \"ImageArcGISRest\") {\r\n return new ImageLayer({\r\n properties: { id: l.id },\r\n source: new ImageArcGISRest({\r\n url: l.url,\r\n crossOrigin: l.crossOrigin,\r\n attributions: l.copyright,\r\n params: l.params\r\n }),\r\n zIndex: l.zIndex\r\n });\r\n }\r\n if (l.type === \"Vector\") {\r\n const source = new VectorSource({\r\n loader: (ext) => loadSourceFeatures(l.url, ext, source),\r\n strategy: tileStrategy(createXYZ({ tileSize: 512 }))\r\n });\r\n return new VectorLayer({\r\n properties: { id: l.id },\r\n source,\r\n minResolution: l.minResolution,\r\n maxResolution: l.maxResolution,\r\n zIndex: l.zIndex,\r\n style: LVMRoadStyle\r\n });\r\n }\r\n })\r\n .filter((l) => l);\r\n\r\n const highLightLayer = new VectorLayer({\r\n properties: { id: config.default.highLightLayerId },\r\n source: highLightSourceRef.current,\r\n zIndex: 90,\r\n style: getHighLightSymbol\r\n });\r\n\r\n const drawingLayerSource = new VectorSource();\r\n\r\n const drawingLayer = new VectorLayer({\r\n properties: { id: config.default.drawingLayerId },\r\n source: drawingLayerSource,\r\n zIndex: 100,\r\n style: (drawFeature) => getDrawingSymbol(drawFeature.get(\"DRAWTYPE\"), drawFeature.get(\"MASTERNAME\"))\r\n });\r\n\r\n _map.current = new Map({\r\n layers: [...baseLayers, ...dataLayers, highLightLayer, drawingLayer],\r\n target: target.current,\r\n view: new View({\r\n projection: config.default.projection,\r\n center: config.default.center,\r\n extent: config.default.viewExtent,\r\n zoom: config.default.zoom,\r\n enableRotation: false,\r\n minZoom: config.default.minZoom,\r\n maxZoom: config.default.maxZoom\r\n }),\r\n controls: defaultControls({ zoom: false, rotate: false, attribution: false }).extend([\r\n new LocationButton(),\r\n new HomeButton(),\r\n new LayersButton(toggleLayersMenuVisible),\r\n new AttributionButton(),\r\n new ScaleControl(),\r\n new DrawingButton(setDrawingMenuVisible)\r\n ])\r\n });\r\n\r\n _map.current.on(\"moveend\", calculateScale);\r\n _map.current.on(\"pointermove\", onPointerMove);\r\n _map.current.on(\"click\", onMapClick);\r\n _map.current.once(\"postcompose\", () =>\r\n drawnFeatures && drawnFeatures.length ? zoomToExtent(drawingLayerSource.getExtent()) : zoomHome()\r\n );\r\n\r\n if (drawnFeatures && drawnFeatures.length) {\r\n drawnFeatures.map((f) => f.setStyle(getDrawingSymbol(f.get(\"DRAWTYPE\"), f.get(\"MASTERNAME\"))));\r\n drawingLayerSource.addFeatures(drawnFeatures);\r\n }\r\n }\r\n }, [hasMap]);\r\n\r\n const onPointerMove = (evt) => {\r\n if (evt.dragging) {\r\n return;\r\n }\r\n\r\n if (hoveredRef.current) {\r\n hoveredRef.current.set(\"HOVERED\", false);\r\n hoveredRef.current = null;\r\n }\r\n if (drawTypeRef.current === DrawType.PolylineLvmRoad) {\r\n _map.current.forEachFeatureAtPixel(\r\n evt.pixel,\r\n (feature, layer) => {\r\n layer.get(\"id\") === \"roadsLVM\" && (feature as Feature).set(\"DRAWTYPE\", DrawType.PolylineLvmRoad);\r\n (feature as Feature).set(\"HOVERED\", true);\r\n hoveredRef.current = feature as Feature;\r\n return true;\r\n },\r\n { layerFilter: (layer) => layer.get(\"id\") === \"roadsLVM\", hitTolerance: 10 }\r\n );\r\n }\r\n\r\n const hasFeatureAtPixel = _map.current.hasFeatureAtPixel(evt.pixel, {\r\n layerFilter: (layer) =>\r\n drawTypeRef.current === DrawType.PolylineLvmRoad\r\n ? true\r\n : layer.get(\"id\") !== \"roadsLVM\" && layer.get(\"id\") !== config.default.highLightLayerId,\r\n hitTolerance: 20\r\n });\r\n target.current.style.cursor = hasFeatureAtPixel ? \"pointer\" : null;\r\n };\r\n\r\n const onMapClick = (evt) => {\r\n if (evt.dragging) {\r\n return;\r\n }\r\n\r\n console.log(\"map click\");\r\n isMobile && !drawTypeRef.current && setDrawingMenuVisible(false);\r\n\r\n if (drawTypeRef.current === DrawType.PolygonProperty) {\r\n identifyOnMap(evt);\r\n return;\r\n }\r\n\r\n const clicked = _map.current.getFeaturesAtPixel(evt.pixel, {\r\n layerFilter: (layer) =>\r\n drawTypeRef.current === DrawType.PolylineLvmRoad ? true : layer.get(\"id\") !== \"roadsLVM\",\r\n hitTolerance: 20\r\n });\r\n if (!clicked.length) {\r\n setClickedFeatures(null);\r\n return;\r\n }\r\n\r\n _map.current.forEachFeatureAtPixel(\r\n evt.pixel,\r\n (feature, layer) => {\r\n layer &&\r\n layer.get(\"id\") === \"roadsLVM\" &&\r\n (feature as Feature).set(\"DRAWTYPE\", DrawType.PolylineLvmRoad);\r\n (feature as Feature).set(\"CLICKED\", true);\r\n },\r\n {\r\n layerFilter: (layer) =>\r\n drawTypeRef.current === DrawType.PolylineLvmRoad ? true : layer.get(\"id\") !== \"roadsLVM\",\r\n hitTolerance: 20\r\n }\r\n );\r\n setClickedFeatures(clicked as Feature[]);\r\n };\r\n\r\n const identifyOnMap = async (evt) => {\r\n const coords = _map.current.getEventCoordinate(evt.originalEvent);\r\n const mapSize = _map.current.getSize();\r\n const extent = _map.current.getView().calculateExtent(mapSize);\r\n if (!coords || !mapSize || !extent) {\r\n return;\r\n }\r\n const params = {\r\n f: \"json\",\r\n tolerance: 8,\r\n imageDisplay: mapSize.toString() + \",96\",\r\n geometry: `{\"x\":${coords[0]}, \"y\":${coords[1]}}`,\r\n geometryType: \"esriGeometryPoint\",\r\n sr: \"3059\",\r\n mapExtent: extent.toString(),\r\n layers: \"visible:\" + config.identify.layers.toString()\r\n };\r\n\r\n setIdentifiedFeatures(await identify(config.identify.url, params));\r\n };\r\n\r\n useEffect(() => {\r\n if (props.features && props.features.length) {\r\n sourceRef.current.clear();\r\n sourceRef.current.addFeatures(props.features);\r\n polygonSourceRef.current.clear();\r\n polygonSourceRef.current.addFeatures(props.features);\r\n } else {\r\n sourceRef.current.clear();\r\n polygonSourceRef.current.clear();\r\n }\r\n }, [props.forceUpdate, props.features]);\r\n\r\n useEffect(() => {\r\n _map.current &&\r\n _map.current.once(\"postcompose\", () => {\r\n zoomToSourceFeatures === 1 && zoomHome(() => setZoomToSourceFeatures(null));\r\n zoomToSourceFeatures > 1 &&\r\n zoomToExtent(sourceRef.current.getExtent(), () => setZoomToSourceFeatures(null));\r\n });\r\n }, [zoomToSourceFeatures]);\r\n\r\n useEffect(() => {\r\n if (!locateFeature || !locateFeature.feature) {\r\n highLightSourceRef.current.clear();\r\n return;\r\n }\r\n highLightSourceRef.current.clear();\r\n highLightSourceRef.current.addFeature(locateFeature.feature);\r\n zoomToFeature(locateFeature.feature);\r\n }, [locateFeature]);\r\n\r\n useEffect(() => {\r\n drawTypeRef.current = drawType;\r\n }, [drawType]);\r\n\r\n useEffect(() => {\r\n _map.current &&\r\n _map.current\r\n .getLayers()\r\n .getArray()\r\n .map(\r\n (layer) =>\r\n config.basemaps.find((bmap) => bmap.id === layer.get(\"id\")) &&\r\n layer.setVisible(basemap === layer.get(\"id\"))\r\n );\r\n\r\n saveBaseMapSettings(basemap);\r\n }, [basemap]);\r\n\r\n //@ts-ignore\r\n window.map = _map.current;\r\n return _map.current;\r\n};\r\n\r\nconst calculateScale = () => {\r\n const view = _map.current.getView();\r\n const pointResolution = getPointResolution(view.getProjection(), view.getResolution(), view.getCenter(), \"m\");\r\n //@ts-ignore\r\n document.mapScale = Math.round(parseFloat(pointResolution.toString()) * inchesPerMeter * DEFAULT_DPI);\r\n};\r\n\r\nconst zoomHome = (callback?: (arg0: boolean) => void) => {\r\n const view = _map.current.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\nconst zoomToExtent = (extent: Extent, callback?: (arg0: boolean) => void) => {\r\n if (!extent || extent.includes(Infinity)) {\r\n return;\r\n }\r\n document.dispatchEvent(new Event(\"stopTracking\"));\r\n const view = _map.current.getView();\r\n view.fit(extent, { duration: 500, padding: [60, 60, 60, 60], callback });\r\n};\r\n\r\nconst zoomToFeature = (feature: Feature): void => {\r\n const view = _map.current.getView();\r\n const geometry = feature.getGeometry() as SimpleGeometry;\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, { duration: 500, maxZoom });\r\n};\r\n\r\nconst saveBaseMapSettings = (storedBaseMap: string) => {\r\n const storage = localStorage.getItem(\"basemap\");\r\n if (storage && storage === JSON.stringify(storedBaseMap)) {\r\n return;\r\n }\r\n localStorage.setItem(\"basemap\", JSON.stringify(storedBaseMap));\r\n};\r\n","import { Feature } from \"ol\";\r\nimport { buffer } from \"ol/extent\";\r\nimport OL3Parser from \"jsts/org/locationtech/jts/io/OL3Parser\";\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/LinearRing\";\r\nimport { getMap } from \"../Forms/DrawingForm\";\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\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), 5);\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 rings = geometries.filter((geometry) => geometry.length); // removes empty rings, to prevent geometryService error\r\n const geom = { hasZ: false, hasM: false, rings };\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(4));\r\n }\r\n\r\n return features;\r\n};\r\n\r\nconst createVectorLayer = (source: VectorSource) =>\r\n new VectorLayer({\r\n source,\r\n style: () => {\r\n return new Style({\r\n fill: new Fill({ color: [0, 0, 255, 0.5] }),\r\n stroke: new Stroke({ color: \"blue\", width: 3 })\r\n });\r\n },\r\n zIndex: 1000\r\n });\r\n\r\nconst visualizeBuffers = (features: Feature[]) => getMap().addLayer(createVectorLayer(new VectorSource({ features })));\r\n\r\nexport const isWorkingDay = (date: Date): boolean => {\r\n const comparableDay = date.getDate() + \".\" + (date.getMonth() + 1);\r\n const isSaturday = date.getDay() === 6;\r\n const isSunday = date.getDay() === 0;\r\n const holidays = getHolidays(date.getFullYear());\r\n const isHoliday = holidays.includes(comparableDay);\r\n\r\n return !isHoliday && !isSaturday && !isSunday;\r\n};\r\n\r\nexport const getEasterDate = (year: number): Date => {\r\n const date = new Date();\r\n // Set the timestamp to midnight.\r\n date.setHours(0, 0, 0, 0);\r\n // Set the year.\r\n date.setFullYear(year);\r\n // Find the golden number.\r\n const a = year % 19;\r\n // Choose which version of the algorithm to use based on the given year.\r\n const b = 2200 <= year && year <= 2299 ? (11 * a + 4) % 30 : (11 * a + 5) % 30;\r\n // Determine whether or not to compensate for the previous step.\r\n const c = b === 0 || (b === 1 && a > 10) ? b + 1 : b;\r\n // Use c first to find the month: April or March.\r\n const m = 1 <= c && c <= 19 ? 3 : 2;\r\n // Then use c to find the full moon after the northward equinox.\r\n const d = (50 - c) % 31;\r\n // Mark the date of that full moon—the \"Paschal\" full moon.\r\n date.setMonth(m, d);\r\n // Count forward the number of days until the following Sunday (Easter).\r\n date.setMonth(m, d + (7 - date.getDay()));\r\n\r\n // Gregorian Western Easter Sunday\r\n return date;\r\n};\r\n\r\nexport const addDays = (date: Date, days: number): Date =>\r\n new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate() + days,\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n\r\nconst getHolidays = (year: number) => {\r\n const LVHolidays = [\"1.1\", \"1.5\", \"4.5\", \"23.6\", \"24.6\", \"18.11\", \"24.12\", \"25.12\", \"31.12\"];\r\n\r\n const easter = getEasterDate(year);\r\n const bigFriday = addDays(easter, -2);\r\n const secondEaster = addDays(easter, 1);\r\n\r\n LVHolidays.push(\r\n bigFriday.getDate() + \".\" + (bigFriday.getMonth() + 1),\r\n secondEaster.getDate() + \".\" + (secondEaster.getMonth() + 1)\r\n );\r\n\r\n return LVHolidays;\r\n};\r\n\r\nexport const getFirstAllowedWorkday = (workDayGap: number): Date => {\r\n const today = new Date(Date.now());\r\n today.setHours(0);\r\n today.setMinutes(0);\r\n today.setSeconds(0);\r\n today.setMilliseconds(0);\r\n let minAllowedWorkDay: Date;\r\n let workDays = 0;\r\n\r\n for (let i = 1; i < 30; i++) {\r\n const incrementedDay = addDays(today, i);\r\n !minAllowedWorkDay && isWorkingDay(new Date(incrementedDay)) && workDays++;\r\n\r\n if (workDays >= workDayGap) {\r\n minAllowedWorkDay = incrementedDay;\r\n break;\r\n }\r\n }\r\n\r\n return minAllowedWorkDay;\r\n};\r\n\r\nexport const formatDate = (date: string): string => date && date.split(\"-\").reverse().join(\".\");\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 { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\n\r\nexport const HelpPopup: FC = () => {\r\n const { isMobile } = useAppContext();\r\n const { setDrawingInfoVisible } = useRegistrationContext();\r\n\r\n const text1 =\r\n \"Norādiet īpašumu (kadastra apzīmējumu), kurā notiks saimnieciskā darbība un ar LVM saskaņojamos objektus\";\r\n const text2 = \"– krautuves vietas, pievešanas ceļus un LVM autoceļus transportēšanai.\";\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 Darbības vietas objektus.
}\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
{info.text}
\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 return (\r\n setInfo({ text: text, xy: [e.clientX, e.clientY] })}>\r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useCallback, useEffect } from \"react\";\r\nimport { ImageArcGISRest, XYZ, Vector as VectorSource } from \"ol/source\";\r\nimport { Image as ImageLayer, Tile as TileLayer, Vector as VectorLayer } from \"ol/layer\";\r\nimport TileGrid from \"ol/tilegrid/TileGrid\";\r\nimport { PopupBody, PopupHeader } from \"./Popup\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { Checkbox } from \"../Elements/Checkbox\";\r\nimport { config, ILayerConfig } from \"../Map/config\";\r\nimport { CloseButton } from \"../Elements/CloseButton\";\r\nimport { getMap } from \"../Forms/DrawingForm\";\r\nimport { loadSourceFeatures } from \"../Map/rest\";\r\nimport { tile as tileStrategy } from \"ol/loadingstrategy\";\r\nimport { createXYZ } from \"ol/tilegrid\";\r\nimport { LVMRoadStyle } from \"../Map/symbols\";\r\nimport \"./LayersMenu.scss\";\r\n\r\nexport const LayersMenu = ({ visible }: { visible: boolean }): JSX.Element => {\r\n const { isMobile, enabledLayers, setEnabledLayers, toggleLayersMenuVisible } = useAppContext();\r\n\r\n const map = getMap();\r\n\r\n useEffect(() => {\r\n const layers = localStorage.getItem(\"layers\")\r\n ? JSON.parse(localStorage.getItem(\"layers\"))\r\n : config.layers.map((layer) => layer.visible && layer.showInToc && layer.id).filter((l) => l);\r\n\r\n const enabled = layers.filter((layer) => layer != undefined);\r\n setEnabledLayers(enabled);\r\n }, []);\r\n\r\n useEffect(() => {\r\n config.layers.map((layerConfig) => {\r\n const mapLayer = map\r\n .getLayers()\r\n .getArray()\r\n .find((layer) => layer.get(\"id\") === layerConfig.id);\r\n\r\n enabledLayers.includes(layerConfig.id)\r\n ? !mapLayer && map.addLayer(prepareLayer(layerConfig))\r\n : map.removeLayer(mapLayer);\r\n });\r\n }, [enabledLayers]);\r\n\r\n const toggleLayer = useCallback(\r\n (visible: boolean, layerId: string): void => {\r\n const cleanBeforeAdd = enabledLayers.filter((id) => id !== layerId);\r\n\r\n setEnabledLayers(visible ? [...cleanBeforeAdd, layerId] : cleanBeforeAdd);\r\n saveLayersSettings(visible ? [...cleanBeforeAdd, layerId] : cleanBeforeAdd);\r\n },\r\n [enabledLayers]\r\n );\r\n\r\n return visible ? (\r\n
\r\n {isMobile ? (\r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {config.layers.map((layer) =>\r\n layer.showInToc ? (\r\n
\r\n toggleLayer(e, layer.id)}\r\n >\r\n
\r\n ) : null\r\n )}\r\n
\r\n
\r\n ) : null;\r\n};\r\n\r\nconst prepareLayer = (layerConfig: ILayerConfig) => {\r\n if (layerConfig.type === \"TileXYZ\") {\r\n return new TileLayer({\r\n source: new XYZ({\r\n url: layerConfig.url + \"/tile/{z}/{y}/{x}\",\r\n projection: config.default.projection,\r\n crossOrigin: layerConfig.crossOrigin,\r\n tileGrid: new TileGrid(config.default.tileGrid)\r\n }),\r\n minResolution: layerConfig.minResolution,\r\n maxResolution: layerConfig.maxResolution,\r\n extent: layerConfig.extent,\r\n properties: { id: layerConfig.id },\r\n zIndex: layerConfig.zIndex\r\n });\r\n }\r\n if (layerConfig.type === \"ImageArcGISRest\") {\r\n return new ImageLayer({\r\n properties: { id: layerConfig.id },\r\n source: new ImageArcGISRest({\r\n url: layerConfig.url,\r\n crossOrigin: layerConfig.crossOrigin,\r\n attributions: layerConfig.copyright,\r\n params: layerConfig.params\r\n }),\r\n zIndex: layerConfig.zIndex\r\n });\r\n }\r\n\r\n if (layerConfig.type === \"Vector\") {\r\n const source = new VectorSource({\r\n loader: (ext) => loadSourceFeatures(layerConfig.url, ext, source),\r\n strategy: tileStrategy(createXYZ({ tileSize: 512 }))\r\n });\r\n return new VectorLayer({\r\n properties: { id: layerConfig.id },\r\n source,\r\n minResolution: layerConfig.minResolution,\r\n maxResolution: layerConfig.maxResolution,\r\n zIndex: layerConfig.zIndex,\r\n style: LVMRoadStyle\r\n });\r\n }\r\n};\r\n\r\nconst saveLayersSettings = (storedLayers) => {\r\n const storage = localStorage.getItem(\"layers\");\r\n if (storage && storage === JSON.stringify(storedLayers)) {\r\n return;\r\n }\r\n localStorage.setItem(\"layers\", JSON.stringify(storedLayers));\r\n};\r\n","import * as React from \"react\";\r\nimport { FC } from \"react\";\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 tooltip?: boolean;\r\n}\r\n\r\nexport const Popup: FC = (props) => {\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
{props.children}
\r\n
\r\n
\r\n ) : (\r\n \r\n {props.hasBackdrop &&
}\r\n
\r\n {props.notDraggable ? (\r\n
{props.children}
\r\n ) : (\r\n \r\n
{props.children}
\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<{ 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","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 { PopupBody, Popup } from \"./Popup\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\n\r\nexport const SearchPopup = (): JSX.Element => {\r\n const { isMobile } = useAppContext();\r\n\r\n const text = (\r\n
\r\n Karti tuvināt meklējot pēc novada vai pagasta. Objektus meklēt pēc zemes vienības kadastra apzīmējuma vai\r\n LVM autoceļa nosaukuma.\r\n
\r\n Objektus var identificēt arī noklikšķinot uz attiecīgā objekta uz kartes.\r\n
\r\n Atrasto īpašumu vai LVM autoceļu pievieno pie Darbības vietas objektu saraksta.\r\n
\r\n );\r\n\r\n return (\r\n \r\n
\r\n {text}\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { FC, useEffect } from \"react\";\r\nimport { Feature } from \"ol\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport { RegistrationContextProvider } from \"../Contexts/RegistrationContext\";\r\nimport { Registration } from \"../Registration/Registration\";\r\nimport { fetchFieldInfo } from \"../Map/rest\";\r\nimport { Info } from \"../Popups/Info/Info\";\r\nimport \"../css/icons/style.css\";\r\nimport \"../css/map.scss\";\r\nimport \"ol/ol.css\";\r\n\r\nexport interface ITimberFlowFormMapProps {\r\n features: Feature[] | null;\r\n forceUpdate: number;\r\n}\r\n\r\nexport const TimberFlowFormMap: FC = () => {\r\n const { setFieldInfos, info } = useAppContext();\r\n\r\n useEffect(() => {\r\n fetchFieldInfo().then((fieldInfo) => setFieldInfos(fieldInfo));\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {info ? : null}\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\n\r\nexport const PrivacySection = () => {\r\n const privacyUrl = \"https://www.lvm.lv/privatuma-politika\";\r\n\r\n return (\r\n
\r\n

Nosūtot pieteikumu, Jūs iesniedzat savus personas datus.

\r\n
Pārzinis: AS “Latvijas valsts meži”.
\r\n
Kontaktinformācija: Vaiņodes iela 1, Rīga, LV-1004, e-pasts: lvm@lvm.lv, tālrunis 67610015.
\r\n
\r\n Datu apstrādes mērķis: Sagatavot un piešķirt atļauju AS \"Latvijas valsts meži\" valdījumā esošo īpašumu\r\n izmantošanai.\r\n
\r\n
\r\n Papildus informācija par datu apstrādi pieejama  \r\n \r\n Privātuma politikā.\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { FC, useEffect, useRef, useState } from \"react\";\r\nimport { PopupButton } from \"../Elements/PopupButton\";\r\nimport { ApplicantForm } from \"../Forms/ApplicantForm\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport {\r\n IAttachmentFile,\r\n IAttachmentPath,\r\n printPdf,\r\n requestObjectIds,\r\n sendEmail,\r\n updateFeatures,\r\n uploadFile\r\n} from \"../Map/rest\";\r\nimport { SummaryForm } from \"../Forms/SummaryForm\";\r\nimport { UserConsentCheck } from \"./UserConsent\";\r\nimport { DrawingForm } from \"../Forms/DrawingForm\";\r\nimport { AttachmentType, DrawType, PageId, PrintType, Result, UploadState } from \"../Map/enums\";\r\nimport { Feature } from \"ol\";\r\nimport { HelpButton } from \"../Elements/HelpButton\";\r\nimport { ConditionsForm } from \"../Forms/ConditionsForm\";\r\nimport { ISubmitStatus } from \"./SummarySection\";\r\nimport { SubmitForm } from \"./SubmitForm\";\r\nimport { TermForm } from \"../Forms/TermForm\";\r\nimport { useAppContext } from \"../Contexts/AppContext\";\r\nimport \"./Registration.scss\";\r\nimport \"../Views/FullscreenView.scss\";\r\n\r\nexport const Registration: FC = () => {\r\n const [submitStatus, setSubmitStatus] = useState();\r\n const [registrationCompleted, setRegistrationCompleted] = useState(undefined);\r\n\r\n const { page, formFeature, drawnFeatures, attachments, summaryData, applicationId } = useRegistrationContext();\r\n\r\n const onSubmit = async () => {\r\n /*** Upload drawn geometries */\r\n if (drawnFeatures && drawnFeatures.length) {\r\n const geometriesUploaded = await uploadFeatures();\r\n if (!geometriesUploaded) {\r\n setSubmitStatus({ name: UploadState.UploadGeometries, result: Result.Error });\r\n setRegistrationCompleted(Result.Error);\r\n console.log(\"Upload geometries error\");\r\n return;\r\n }\r\n setSubmitStatus({ name: UploadState.UploadGeometries, result: Result.Success });\r\n console.log(\"geometries uploaded\");\r\n }\r\n /*** Upload attachments */\r\n attachments && attachments.length ? await uploadAttachments() : await Promise.resolve();\r\n console.log(\"attachments uploaded\");\r\n\r\n /*** Create PDF */\r\n const pdfResult = await printPdf(summaryData, PrintType.File);\r\n if (pdfResult && pdfResult.status === 0) {\r\n setSubmitStatus({ name: UploadState.CreatePdf, result: Result.Error });\r\n setRegistrationCompleted(Result.Error);\r\n return;\r\n }\r\n setSubmitStatus({ name: UploadState.CreatePdf, result: Result.Success });\r\n const file = new File([pdfResult.data], \"pieteikums.pdf\", { type: \"application/pdf\" });\r\n console.log(\"pdf print result\", pdfResult);\r\n\r\n /*** Upload PDF */\r\n const uploadedPdfFileName = await uploadPdf(file);\r\n if (!uploadedPdfFileName) {\r\n setSubmitStatus({ name: UploadState.UploadPdf, result: Result.Error });\r\n setRegistrationCompleted(Result.Error);\r\n return;\r\n }\r\n setSubmitStatus({ name: UploadState.UploadPdf, result: Result.Success });\r\n\r\n /*** Submit Form */\r\n formFeature.setProperties({\r\n FORMINPUTSTATE: 110,\r\n APPLICTIONID: applicationId,\r\n CADASTER: drawnFeatures.find((f) => f.get(\"DRAWTYPE\") === DrawType.PolygonProperty).get(\"CADASTER\"),\r\n PROPERTYTITLE: drawnFeatures.find((f) => f.get(\"DRAWTYPE\") === DrawType.PolygonProperty).get(\"MASTERNAME\")\r\n });\r\n const featureUpdate = await updateFeatures([formFeature], \"3\");\r\n if (!featureUpdate || !featureUpdate[0].success) {\r\n setSubmitStatus({ name: UploadState.SubmitForm, result: Result.Error });\r\n setRegistrationCompleted(Result.Error);\r\n console.log(\"Submit form error\");\r\n return;\r\n }\r\n setSubmitStatus({ name: UploadState.SubmitForm, result: Result.Success });\r\n console.log(\"Form feature submitted\", featureUpdate);\r\n\r\n /*** Send Email with attached PDF */\r\n const emailAttachment: IAttachmentFile = {\r\n type: AttachmentType.File,\r\n endpoint: \"FileProvider\", // endpoint name, taken from Mailer appsettings.config\r\n resourceId: uploadedPdfFileName\r\n };\r\n\r\n /*** Send Email with PDF as path */\r\n // const emailAttachment: IAttachmentPath = {\r\n // type: AttachmentType.Path,\r\n // // url: pdfResult.data.path\r\n // url: uploadedPdfFileName\r\n // };\r\n\r\n const emailResult = await sendEmail(formFeature.get(\"APPLICANTEMAIL\"), [emailAttachment]);\r\n console.log(\"send email result\", emailResult);\r\n if (emailResult && emailResult.status === 0) {\r\n setSubmitStatus({ name: UploadState.SendEmail, result: Result.Error });\r\n setRegistrationCompleted(Result.Error);\r\n return;\r\n }\r\n setSubmitStatus({ name: UploadState.SendEmail, result: Result.Success });\r\n setRegistrationCompleted(Result.Success);\r\n };\r\n\r\n const uploadFeatures = async () => {\r\n return Promise.all(\r\n drawnFeatures.map(async (feature, i) => {\r\n feature.setProperties({\r\n TYPE: getFeatureType(feature),\r\n FORMGLOBALID: formFeature.get(\"GLOBALID\"),\r\n FORMINPUTSTATE: 110,\r\n APPLICTIONID: applicationId\r\n });\r\n return await requestObjectIds([feature], getLayerId(feature));\r\n })\r\n );\r\n };\r\n\r\n const uploadAttachments = async () => {\r\n const fileFeatures: Feature[] = Array.from(attachments, (file) => {\r\n const fileFeature = new Feature();\r\n fileFeature.set(\"FILEDESCRIPTION\", file.name);\r\n return fileFeature;\r\n });\r\n\r\n const fileFeatureOIDs = await requestObjectIds(fileFeatures, \"4\");\r\n return Promise.all(\r\n fileFeatureOIDs.map(async (oid, i) =>\r\n uploadFile(attachments[i], oid.objectId.toString()).then((uploadResult) => {\r\n if (uploadResult && uploadResult.status === 200 && uploadResult.data.fileName) {\r\n fileFeatures[i].setProperties({\r\n OBJECTID: oid.objectId,\r\n FILEID: uploadResult.data.fileName,\r\n FORMGLOBALID: formFeature.get(\"GLOBALID\")\r\n });\r\n setSubmitStatus({ name: attachments[i].name, result: Result.Success });\r\n } else {\r\n setSubmitStatus({ name: attachments[i].name, result: Result.Error });\r\n }\r\n })\r\n )\r\n )\r\n .then(() => updateFeatures(fileFeatures, \"4\"))\r\n .then((updated) => updated);\r\n };\r\n\r\n const uploadPdf = async (file: File): Promise => {\r\n const fileFeature: Feature = new Feature();\r\n fileFeature.set(\"FILEDESCRIPTION\", file.name);\r\n\r\n const fileFeatureOIDs = await requestObjectIds([fileFeature], \"4\");\r\n const oid = fileFeatureOIDs[0];\r\n\r\n const uploadResult = await uploadFile(file, oid.objectId.toString());\r\n if (!uploadResult || uploadResult.status !== 200 || !uploadResult.data.fileName) {\r\n return;\r\n }\r\n\r\n fileFeature.setProperties({\r\n OBJECTID: oid.objectId,\r\n FILEID: uploadResult.data.fileName,\r\n FORMGLOBALID: formFeature.get(\"GLOBALID\")\r\n });\r\n const featureUpdate = await updateFeatures([fileFeature], \"4\");\r\n\r\n return featureUpdate && featureUpdate[0].success && uploadResult.data.fileName;\r\n };\r\n\r\n useEffect(() => {\r\n page === PageId.Submit && onSubmit();\r\n }, [page]);\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\n\r\nconst RegistrationHeader = (): JSX.Element => {\r\n const { page } = useRegistrationContext();\r\n\r\n return (\r\n
\r\n <>\r\n {page === PageId.ApplicantForm &&
Dati par iesniedzēju
}\r\n {page === PageId.DrawingForm && (\r\n <>\r\n
Darba vieta
\r\n \r\n \r\n )}\r\n {page === PageId.TermForm &&
Darbības termiņš
}\r\n {page === PageId.ConditionsForm &&
Nosacījumi
}\r\n {page === PageId.SummaryForm &&
Kopsavilkums
}\r\n {page === PageId.Submit &&
PIETEIKUMA IESNIEGŠANA
}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst RegistrationBody = ({\r\n submitStatus,\r\n registrationCompleted\r\n}: {\r\n submitStatus: ISubmitStatus;\r\n registrationCompleted: Result | undefined;\r\n}): JSX.Element => {\r\n const { page, setUserConsent, overlay } = useRegistrationContext();\r\n\r\n const content = (\r\n <>\r\n {page === PageId.ApplicantForm && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n {page === PageId.DrawingForm && }\r\n {page === PageId.TermForm && }\r\n {page === PageId.ConditionsForm && }\r\n {page === PageId.SummaryForm && }\r\n {page === PageId.Submit && (\r\n \r\n )}\r\n \r\n );\r\n return (\r\n
\r\n
{content}
\r\n {overlay ? : null}\r\n
\r\n );\r\n};\r\n\r\nconst RegistrationFooter = (): JSX.Element => {\r\n const containerRef = useRef();\r\n const { isMobile } = useAppContext();\r\n const {\r\n page,\r\n formFeature,\r\n userConsent,\r\n onFormBack,\r\n onFormProceed,\r\n conditionAgreed,\r\n overlay\r\n } = useRegistrationContext();\r\n\r\n useEffect(() => {\r\n if (!isMobile && page === PageId.ApplicantForm) {\r\n setTimeout(() => {\r\n const captcha = document.getElementsByClassName(\"grecaptcha-badge\")[0].cloneNode(true);\r\n containerRef.current && containerRef.current.append(captcha);\r\n }, 200);\r\n }\r\n }, [isMobile, page]);\r\n\r\n const content = (\r\n <>\r\n {page === PageId.ApplicantForm && (\r\n <>\r\n
\r\n \r\n \r\n )}\r\n {(page === PageId.DrawingForm || page === PageId.TermForm) && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n {page === PageId.ConditionsForm && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n {page === PageId.SummaryForm && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n {page === PageId.Submit && (\r\n \r\n )}\r\n \r\n );\r\n return (\r\n
\r\n
{content}
\r\n
\r\n );\r\n};\r\n\r\nexport interface IFullscreenViewOverlay {\r\n isLoading?: boolean;\r\n info?: string;\r\n warning?: string;\r\n}\r\n\r\nconst FullscreenOverlay = ({ overlay }: { overlay: IFullscreenViewOverlay }) => (\r\n
\r\n {overlay.isLoading && (\r\n
\r\n
\r\n
\r\n )}\r\n {overlay.info &&
{overlay.info}
}\r\n {overlay.warning &&
{overlay.warning}
}\r\n
\r\n);\r\n\r\nconst getFeatureType = (feature) => (feature.get(\"DRAWTYPE\") === DrawType.PolylineRoad ? 2 : 1);\r\n\r\nconst getLayerId = (feature) => {\r\n const drawType = feature.get(\"DRAWTYPE\");\r\n return drawType === DrawType.PointYard\r\n ? \"0\"\r\n : drawType === DrawType.PolylineRoad || drawType === DrawType.PolylineLvmRoad\r\n ? \"1\"\r\n : \"2\";\r\n};\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { Result, UploadState } from \"../Map/enums\";\r\nimport \"./SubmitForm.scss\";\r\n\r\nexport interface ISubmitStatus {\r\n name: UploadState | string;\r\n result: Result;\r\n}\r\ninterface IUploadStates {\r\n [fileName: string]: Result;\r\n}\r\n\r\nexport const SubmitForm = ({\r\n submitStatus,\r\n completed\r\n}: {\r\n submitStatus: ISubmitStatus;\r\n completed: Result | undefined;\r\n}): JSX.Element => {\r\n const [uploadStates, setUploadStates] = useState({});\r\n\r\n const { attachments, drawnFeatures } = useRegistrationContext();\r\n\r\n useEffect(() => {\r\n const newState = { ...uploadStates };\r\n if (submitStatus && submitStatus.name) {\r\n newState[submitStatus.name] = submitStatus.result;\r\n\r\n // if uploadPDF fails, set Error for all next steps\r\n if (submitStatus.name === UploadState.UploadPdf && submitStatus.result === Result.Error) {\r\n newState[UploadState.SubmitForm] = Result.Error;\r\n newState[UploadState.SendEmail] = Result.Error;\r\n }\r\n }\r\n setUploadStates(newState);\r\n }, [submitStatus]);\r\n\r\n return (\r\n
\r\n
\r\n {drawnFeatures && drawnFeatures.length ? (\r\n \r\n ) : null}\r\n {attachments && (\r\n <>\r\n {Array.from(attachments, (attachment) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n {completed === undefined\r\n ? \"Datu pievienošana...\"\r\n : completed === Result.Success\r\n ? \"Pieteikums iesniegts!\"\r\n : \"Pieteikums nav iesniegts.\"}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface IStatusItem {\r\n states: IUploadStates;\r\n itemStatusName: UploadState | string;\r\n titles: { default: string; success: string; error: string };\r\n}\r\n\r\nconst StatusItem = ({ states, itemStatusName, titles }: IStatusItem) => (\r\n
\r\n
\r\n {states[itemStatusName] === undefined ? (\r\n
\r\n ) : states[itemStatusName] === Result.Success ? (\r\n
\r\n ) : (\r\n
\r\n )}\r\n
\r\n
\r\n {states[itemStatusName] === undefined\r\n ? titles.default\r\n : states[itemStatusName] === Result.Success\r\n ? titles.success\r\n : titles.error}\r\n
\r\n
\r\n);\r\n","import * as React from \"react\";\r\nimport { useRegistrationContext } from \"../Contexts/RegistrationContext\";\r\nimport { Upload } from \"../Forms/Upload\";\r\nimport { UploadList } from \"../Forms/UploadList\";\r\nimport { Result, UploadState } from \"../Map/enums\";\r\n\r\nexport interface ISubmitStatus {\r\n name: UploadState | string;\r\n result: Result;\r\n}\r\nexport interface ISummaryParams {\r\n customer: ISection;\r\n transporting: IAliasSection;\r\n contactPerson?: ISection;\r\n snapshot?: string;\r\n attachments?: ISection;\r\n date?: string;\r\n applicationId: string;\r\n}\r\n\r\ninterface IAliasValue {\r\n alias: string;\r\n value: string;\r\n}\r\ninterface ISection {\r\n title: string;\r\n rows: string[];\r\n}\r\ninterface IAliasSection {\r\n title: string;\r\n rows: IAliasValue[];\r\n}\r\n\r\nexport const Section = ({ classname, data }: { classname: string; data: ISection }): JSX.Element => (\r\n
\r\n
{data.title}
\r\n {data.rows.map((row) => (\r\n
\r\n {row}\r\n
\r\n ))}\r\n
\r\n);\r\n\r\nexport const AliasSection = ({ classname, data }: { classname: string; data: IAliasSection }): JSX.Element => (\r\n
\r\n
{data.title}
\r\n {data.rows.map((row, i) =>\r\n row ? (\r\n
\r\n {row.alias ? {row.alias} : null}\r\n {row.value ? {row.value} : null}\r\n
\r\n ) : null\r\n )}\r\n
\r\n);\r\nexport const AttachmentSection = ({ classname, data }: { classname: string; data: ISection }): JSX.Element => {\r\n const { attachments, setAttachments } = useRegistrationContext();\r\n\r\n return (\r\n
\r\n
{data.title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const SnapshotSection = ({ classname, snapshot }: { classname: string; snapshot: string }): JSX.Element => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const UploadSection = ({ classname, title }: { classname: string; title: string }): JSX.Element => (\r\n
\r\n
{title}
\r\n \r\n
\r\n);\r\n","import * as React from \"react\";\r\nimport { Checkbox } from \"../Elements/Checkbox\";\r\nimport \"./UserConsent.scss\";\r\n\r\nexport const UserConsentCheck = ({\r\n onChange,\r\n defaultChecked\r\n}: {\r\n onChange: CallableFunction;\r\n defaultChecked?: boolean;\r\n}): JSX.Element => (\r\n onChange(checked)}\r\n >\r\n);\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 { TimberFlowFormMap } from \"./Providers/mapProvider\";\r\nimport Favicon from \"../src/img/LVM_GEO_logo_128.jpg\";\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 = (): void => {\r\n const target = document.getElementById(\"timberflowform-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 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","import \"elm-pep\";\r\nexport * from \"./Providers/mapProvider\";\r\nexport { renderMap } from \"./renderMap\";\r\n","/**\n * Copyright (c) 2014-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\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\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","/*!\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\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) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\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","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\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 34264: 'DOUBLE',\n 34665: 'LONG',\n 34735: 'SHORT',\n 34736: 'DOUBLE',\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 Zstandard: 2,\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) { \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"," \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 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 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 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 FastPriorityQueue from 'fastpriorityqueue'\n\nexport default class PriorityQueue {\n\n constructor() {\n this._fpQueue = new FastPriorityQueue((a,b) => a.compareTo(b) < 0)\n }\n\n poll() {\n return this._fpQueue.poll()\n }\n size() {\n return this._fpQueue.size\n }\n clear() {\n this._fpQueue = new FastPriorityQueue()\n }\n peek() {\n return this._fpQueue.peek()\n }\n remove() {\n return this._fpQueue.poll()\n }\n isEmpty() {\n return this._fpQueue.isEmpty()\n }\n add(x) {\n this._fpQueue.add(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 '../../../../../java/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 * @template T\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 */\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 */\n flushDeclutterItems(frameState) {}\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 * @type {Array}\n */\n this.declutterLayers_ = [];\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 const declutterLayers = this.declutterLayers_;\n declutterLayers.length = 0;\n\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 this.flushDeclutterItems(frameState);\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 /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n flushDeclutterItems(frameState) {\n const layers = this.declutterLayers_;\n for (let i = layers.length - 1; i >= 0; --i) {\n layers[i].renderDeclutter(frameState);\n }\n layers.length = 0;\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 {ReturnType}\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 * This method is meant to be called in a layer's `prerender` listener. It causes all collected\n * declutter items to be decluttered and rendered on the map immediately. This is useful for\n * layers that need to appear entirely above the decluttered items of layers lower in the layer\n * stack.\n * @api\n */\n flushDeclutterItems() {\n const frameState = this.frameState_;\n if (!frameState) {\n return;\n }\n this.renderer_.flushDeclutterItems(frameState);\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 {ReturnType}\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 // when elm-pep is used as pointer events polyfill.\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 * Compare function sorting arrays in descending 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 greater than, equal to, or less than the second.\n */\nexport function descending(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 * @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 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 target: options.target,\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`, `xyz` or `xyzm` coordinate.\n * 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 the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKey = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return MAC ? originalEvent.metaKey : originalEvent.ctrlKey;\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